Parcourir la source

refactor(client/getMe) return type based on args (#661)

Grigory il y a 1 an
Parent
commit
4690d50d7e

+ 2 - 0
gramjs/client/TelegramClient.ts

@@ -1226,6 +1226,8 @@ export class TelegramClient extends TelegramBaseClient {
      * console.log("My username is",me.username);
      * console.log("My username is",me.username);
      * ```
      * ```
      */
      */
+    getMe(inputPeer: true): Promise<Api.InputPeerUser>;
+    getMe(inputPeer?: false): Promise<Api.User>;
     getMe(inputPeer = false) {
     getMe(inputPeer = false) {
         return userMethods.getMe(this, inputPeer);
         return userMethods.getMe(this, inputPeer);
     }
     }

+ 6 - 6
gramjs/client/users.ts

@@ -122,12 +122,12 @@ export async function invoke<R extends Api.AnyRequest>(
 }
 }
 
 
 /** @hidden */
 /** @hidden */
-export async function getMe(
-    client: TelegramClient,
-    inputPeer = false
-): Promise<Api.InputPeerUser | Api.User> {
+export async function getMe<
+    T extends boolean,
+    R = T extends true ? Api.InputPeerUser : Api.User
+>(client: TelegramClient, inputPeer: T): Promise<R> {
     if (inputPeer && client._selfInputPeer) {
     if (inputPeer && client._selfInputPeer) {
-        return client._selfInputPeer;
+        return client._selfInputPeer as R;
     }
     }
     const me = (
     const me = (
         await client.invoke(
         await client.invoke(
@@ -142,7 +142,7 @@ export async function getMe(
             false
             false
         ) as Api.InputPeerUser;
         ) as Api.InputPeerUser;
     }
     }
-    return inputPeer ? client._selfInputPeer : me;
+    return inputPeer ? (client._selfInputPeer as R) : (me as R);
 }
 }
 
 
 /** @hidden */
 /** @hidden */

+ 1 - 1
gramjs/tl/custom/messageButton.ts

@@ -153,7 +153,7 @@ export class MessageButton {
                 );
                 );
             }
             }
             if (sharePhone == true || typeof sharePhone == "string") {
             if (sharePhone == true || typeof sharePhone == "string") {
-                const me = (await this._client.getMe()) as Api.User;
+                const me = await this._client.getMe();
                 sharePhone = new Api.InputMediaContact({
                 sharePhone = new Api.InputMediaContact({
                     phoneNumber:
                     phoneNumber:
                         (sharePhone == true ? me.phone : sharePhone) || "",
                         (sharePhone == true ? me.phone : sharePhone) || "",