gram-js / gramjs

NodeJS/Browser MTProto API Telegram client library,
MIT License
1.28k stars 179 forks source link

CastError: Found wrong type for lastName. #190

Closed pythonjsgo closed 2 years ago

pythonjsgo commented 2 years ago

Hello, I am facing error then registering new account, after entering sms code CastError: Found wrong type for lastName. expected string but received undefined.If you think this is a mistake please report it.

Please help šŸ™


const { TelegramClient } = require("telegram");
const { StringSession } = require("telegram/sessions");
const input = require("input"); // npm i input

const apiId = 123456;
const apiHash = "123456abcdfg";
const stringSession = new StringSession(""); // fill this later with the value from session.save()

(async () => {
  console.log("Loading interactive example...");
  const client = new TelegramClient(stringSession, apiId, apiHash, {
    connectionRetries: 5,
  });
  await client.start({
    phoneNumber: async () => await input.text("number ?"),
    password: async () => await input.text("password?"),
    phoneCode: async () => await input.text("Code ?"),
    onError: (err) => console.log(err),
  });
  console.log("You should now be connected.");
  console.log(client.session.save()); // Save this string to avoid logging in again
  await client.sendMessage("me", { message: "Hello!" });
})();
pythonjsgo commented 2 years ago

Full error text


CastError: Found wrong type for lastName. expected string but received undefined.If you think this is a mistake please report it.
    at VirtualClass.assertType (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/api.js:353:43)
    at VirtualClass.validate (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/api.js:299:30)
    at VirtualClass.getBytes (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/api.js:360:26)
    at new RequestState (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/network/RequestState.js:9:29)
    at MTProtoSender.send (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/network/MTProtoSender.js:197:23)
    at Object.invoke (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/users.js:27:44)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Object.signInUser (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:150:35)
    at async _authFlow (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:338:11)
    at async Object.start (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:41:5)
TypeError: Cannot read properties of undefined (reading 'constructor')
    at serializeBytes (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/generationHelpers.js:238:60)
    at argToBytes (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/api.js:105:20)
    at VirtualClass.getBytes (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/tl/api.js:412:42)
    at new RequestState (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/network/RequestState.js:9:29)
    at MTProtoSender.send (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/network/MTProtoSender.js:197:23)
    at Object.invoke (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/users.js:27:44)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Object.signInUser (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:150:35)
    at async _authFlow (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:338:11)
    at async Object.start (/home/navalny/PROJ/node/telegram_autoreger/node_modules/telegram/client/auth.js:41:5)
CastError: Found wrong type for lastName. expected string but received undefined.If you think this is a mistake please report it.
painor commented 2 years ago

when you register a new account you should pass first name and lastname like this

client.start({
    phoneNumber: async () => await input.text('number ?'),
    password: async () => await input.text('password?'),
    phoneCode: async () => await input.text('Code ?'),
    firstAndLastNames:async () => ['Myrtle','lastnme'],
    onError: (err) => console.error(`${err} err`),
})
pythonjsgo commented 2 years ago

Thanks! I see now problem then I am creating new account using client.start() method no sms is sending. Is threre any special methods for SingUp?

painor commented 2 years ago

signIn also creates an account if it doesn't exist https://gram.js.org/beta/classes/client_telegramclient.telegramclient.html#signinuser

There is no specific signUp method (start already does everything)