1
0
Эх сурвалжийг харах

Fix tlobject generation
fix errors.

painor 5 жил өмнө
parent
commit
3bb743415e

+ 2 - 1
gramjs/errors/RPCBaseErrors.js

@@ -14,7 +14,8 @@ class RPCError extends Error {
     }
 
     static _fmtRequest(request) {
-        return ` (caused by ${request.constructor.name})`
+        // TODO fix this
+        return ` (caused by ${request})`
     }
 }
 

+ 1 - 1
gramjs/errors/index.js

@@ -10,7 +10,7 @@ function RPCMessageToError(rpcError, request) {
     //Try to get the error by direct look-up, otherwise regex
     let cls = rpcErrorsObject[rpcError.errorMessage];
     if (cls) {
-        return cls(request);
+        return new cls(request);
     } else {
         return rpcError.errorMessage;
     }

+ 6 - 2
gramjs/tl/Session.js

@@ -8,12 +8,16 @@ BigInt.toJSON = function () {
 BigInt.parseJson = function () {
     return {fool: BigInt("0x" + this.fool)}
 };
+const DEFAULT_DC_ID = 4;
+const DEFAULT_IPV4_IP = '149.154.167.92';
+const DEFAULT_IPV6_IP = '[2001:67c:4e8:f002::a]';
+const DEFAULT_PORT = 443;
 
 class Session {
     constructor(sessionUserId) {
         this.sessionUserId = sessionUserId;
-        this.serverAddress = "149.154.167.40";
-        this.port = 443;
+        this.serverAddress = DEFAULT_IPV4_IP;
+        this.port = DEFAULT_PORT;
         //this.serverAddress = "localhost";
         //this.port = 21;
         this.authKey = undefined;

+ 1 - 0
gramjs/tl/TelegramClient.js

@@ -115,6 +115,7 @@ class TelegramClient {
             apiHash: this.apiHash,
         });
         let result = await this.invoke(request);
+        return result;
     }
 }
 

+ 7 - 6
gramjs_generator/generators/tlobject.js

@@ -372,7 +372,7 @@ const writeClassConstructor = (tlobject, kind, typeConstructors, builder) => {
             }
 
             builder.writeln(
-                `this.randomId = randomId !== null ? randomId : ${code}`
+                `this.randomId = args.randomId !== undefined ? args.randomId : ${code};`
             );
         } else {
             throw new Error(`Cannot infer a value for ${arg}`);
@@ -587,12 +587,13 @@ const writeArgToBytes = (builder, arg, args, name = null) => {
             // so we need an extra join here. Note that empty vector flags
             // should NOT be sent either!
             builder.write(
-                "%s === null || %s === false ? Buffer.alloc(0) :Buffer.concat([",
+                "(%s === undefined || %s === false || %s ===null) ? Buffer.alloc(0) :Buffer.concat([",
+                name,
                 name,
                 name
             );
         } else {
-            builder.write("%s === null || %s === false ? Buffer.alloc(0) : [", name, name);
+            builder.write("(%s === undefined || %s === false || %s ===null) ? Buffer.alloc(0) : [", name, name,name);
         }
     }
 
@@ -627,9 +628,9 @@ const writeArgToBytes = (builder, arg, args, name = null) => {
                     .filter(flag => flag.isFlag)
                     .map(
                         flag =>
-                            `(this.${flag.name} === null || this.${
-                                flag.name
-                            } === false ? 0 : ${1 << flag.flagIndex})`
+                            `(this.${variableSnakeToCamelCase(flag.name)} === undefined || this.${
+                                variableSnakeToCamelCase(flag.name)
+                            } === false || this.${variableSnakeToCamelCase(flag.name)} === null) ? 0 : ${1 << flag.flagIndex}`
                     )
                     .join(' | ')
             );

+ 37 - 4
main.js

@@ -3,23 +3,56 @@ const TelegramClient = require("./gramjs/tl/TelegramClient");
 const {GetConfigRequest} = require("./gramjs/tl/functions/help");
 const struct = require("python-struct");
 const log4js = require('log4js');
+const {InputPeerChannel} = require("./gramjs/tl/types");
+const {SendMessageRequest} = require("./gramjs/tl/functions/messages");
+const {InputPeerUser} = require("./gramjs/tl/types");
+const {ResolveUsernameRequest} = require("./gramjs/tl/functions/contacts");
 const logger = log4js.getLogger("gramjs");
 
 logger.level = 'debug';
 
+let painorId = 400319287;
+let painorHash = 4770003194588524965n;
+
+let input_peer = new InputPeerChannel({
+    channelId: 1180212174,
+    accessHash: 548480552819456668n,
+});
+let message = new SendMessageRequest({
+    peer: input_peer,
+    message: "hi",
+    randomId: 5,
+});
+console.log(message.bytes.toString("hex"));
 
 (async function () {
 
+
     console.log("Loading interactive example...");
     let sessionName = "anon";
-    let apiId = 139938;
-    let apiHash = "284b4948be43b955f7398d2abf355b3f";
+    let apiId = ;
+    let apiHash = "";
     let client = new TelegramClient(sessionName, apiId, apiHash);
     await client.connect();
     //let request = new GetConfigRequest();
     //let res =         await client._sender.send(new GetConfigRequest());
     //console.log(res)
-    await client.signIn({botToken: "773348:AAEL_68PNU0ekQhzpjBKj9U5S4WiINq-voY"});
-    console.log("You should now be connected.");
+    let res = await client.signIn({botToken: ""});
+    let user = res.user;
+    client._authorized = true;
+    let result = await client.invoke(new ResolveUsernameRequest({
+            username: 'gramjschat'
+        }
+    ));
+    console.log(result);
+
+    let message = new SendMessageRequest({
+        peer: input_peer,
+        message: "hi from GramJS",
+    });
+    console.log(message);
+    let r = await client.invoke(message);
+    console.log(r);
+    console.log("You should now be connected.", user);
 })();