node-telegram-bot-api
node-telegram-bot-api copied to clipboard
My bot can't get 'new_chat_members' event - only working for bots created with botfather for testing, not real users
Hi guyz, My bot can't get 'new_chat_members' event - only working with test-bots created on my account with botfather for testing, not with real users joining the group. Any idea why ???
I use the bot.on('new_chat_members', (msg) => { ...
Thanks in advance for your advices @VDS13 @Sidelux Could you help ? thanks in advance Y.
Hello. Are administrator rights granted to the bot?
Without administrator rights, it does not track this event.
Hi @VDS13 😊🙏 thanks for your answer. My bot is already Admin in the group where I added it. You mean I have to set something in botfather?
And do you know why it works perfectly for test bots created under my account and joining the group, but not with other users?
Hello. Are administrator rights granted to the bot?
Yes they already are
Is the group public or private?
@VDS13 Hey Dmitry, it is public
Strange.
Let's summarize: a bot with administrator rights, a public group, not a supergroup, new_chat_members works on your bots, but not on users?
yes exactly ! i agree it is weird :) here is the group: https://t.me/Souffles_Magiques
Show a piece of code from the beginning to the new_chat_members event handler.
bot.on('new_chat_members', (msg) => { console.log(msg) } });
nothing is coming. I want channel id through my bot like https://t.me/username_to_id_bot bot is doing.
There are no others in the code before this handler (let's say bot.on('message', ...))?
const TelegramBot = require('node-telegram-bot-api'); const token = '<bot_token>';
const bot = new TelegramBot(token, { polling: true }); bot.on('message', (msg) => { console.log(msg) } });
I am trying to get channel_id when my bot joins any channel. how can I do it? can you give me any solution
If your message handler comes before new_chat_members, then try swapping them.
That is:
const TelegramBot = require('node-telegram-bot-api');
const token = '<bot_token>';
const bot = new TelegramBot(token, { polling: true });
bot.on('new_chat_members', (msg) => {
console.log(msg)
});
bot.on('message', (msg) => {
console.log(msg)
});
Still not working, I am getting message when i send to bot, but while adding bot to any channel I am not getting any channel_id, new-chat_members not working. This is working for groups but not channels.
Hi @VDS13 Here is a test code using what I use:
import TelegramBot from 'node-telegram-bot-api';
// Replace 'YOUR_BOT_TOKEN' with your actual bot token const bot = new TelegramBot('xxxxxxxxxxxxxxx', { polling: true });
// Event handler for new chat members bot.on('new_chat_members', (msg) => { console.log('New user event triggered'); console.log('New chat members:', msg.new_chat_members);
// Process new members processNewMembers(msg.new_chat_members); });
// Function to process new members const processNewMembers = (newMembers) => { newMembers.forEach((member) => { console.log('New member:', member); // Perform any additional processing here }); };
// Event handler for messages bot.on('message', (msg) => { console.log('Received message:', msg.text); });
// Start the bot console.log('Bot is running...');
Obviously I'm not the only one with this problem. Telegram maybe changed something and your event handler has to be updated ?
@dev-anshu for me adding a test bot created with botfather is working ! Event is triggerd. But any other bot or real user not.
that's weird, anyway you can try go to botFather, use /mybots -> select your bot -> Gruop Privacy -> Turn off
Hi @Sp3rick Thanks for your help. I did it but it did not work.
@VDS13 Do you, or anyone reading this, succeed with the code i provided in a group of yours ?
Are you sure events from library are up to date?
Is there any dev knowing if the code is still working ? @yagop @GochoMugo @kamikazechaser @danielperez9430 ? Cheeers
Source: https://core.telegram.org/bots/api-changelog#april-26-2021
So now, use "chat_member" for know if user join or left.
This warning is from 3 years ago, so maybe now is deprecated for normal users.
So now, use "chat_member" for know if user join or left.
This warning is from 3 years ago, so maybe now is deprecated for normal users.
You can try the following, it works for me. It detects both input and output in groups.
let TelegramBot = require('node-telegram-bot-api');
let bot = new TelegramBot('YOUR_TOKEN', { "polling": true })
bot.on('chat_member', (memberStatus) => {
console.log(memberStatus)
})
This code would return something similar to the following image
Thanks for your answers @danielperez9430 and @IscoV 😊👍 I just used your code @IscoV but bot does not see nor any user nor any bot now.
When have you tested those lines of code? In a group? Why would my bot not see anything and yours yes? Cheers
Ps: node-telegram-bot version is 0.64.0
I used:
let TelegramBot = require ('node-telegram-bot-api');
// Replace 'YOUR_BOT_TOKEN' with your actual bot token let bot = new TelegramBot('XXXX', { polling: true });
// Event handler for new chat members bot.on('chat_member', (memberStatus) => { console.log('User event triggered'); //console.log(memberStatus); let {chat, from, date, old_chat_member, new_chat_member } = memberStatus; console.log("Chat: ", chat); console.log("From: ", from); console.log("Date: ", date); console.log("Old Member: ", old_chat_member); console.log("New Member: ", new_chat_member);
});
// Start the bot console.log('Bot is running...');
Thanks for your answers @danielperez9430 and @IscoV 😊👍 I just used your code @IscoV but bot does not see nor any user nor any bot now.
When have you tested those lines of code? In a group? Why would my bot not see anything and yours yes? Cheers
Ps: node-telegram-bot version is 0.64.0
At the time of execution, it should not show anything. It should only show the information when adding or joining a user/bot to the group.
Thanks for your answers @danielperez9430 and @IscoV 😊👍 I just used your code @IscoV but bot does not see nor any user nor any bot now. When have you tested those lines of code? In a group? Why would my bot not see anything and yours yes? Cheers Ps: node-telegram-bot version is 0.64.0
At the time of execution, it should not show anything. It should only show the information when adding or joining a user/bot to the group.
@IscoV Yes yes, I'm talking about this. I added a bot and a user joined for testing. Nothing shows. Have you tested it now on your group ?
Thanks for your answers @danielperez9430 and @IscoV 😊👍 I just used your code @IscoV but bot does not see nor any user nor any bot now. When have you tested those lines of code? In a group? Why would my bot not see anything and yours yes? Cheers Ps: node-telegram-bot version is 0.64.0
At the time of execution, it should not show anything. It should only show the information when adding or joining a user/bot to the group.
@IscoV Yes yes, I'm talking about this. I added a bit and a user joined for testing. Nothing shows. Have you tested it now on your group ?
I tested it before sending it. Else, try to enable the update manually.
Paste the following URL in your browser and replace the YOUR_BOT_TOKEN
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates?allowed_updates=["update_id","message","edited_message","channel_post","edited_channel_post","inline_query","chosen_inline_result","callback_query","shipping_query","pre_checkout_query","poll","poll_answer","my_chat_member","chat_member"]
'new_chat_members' event sometimes works, sometimes it doesn't
'new_chat_members' event sometimes works, sometimes it doesn't
You too? Is there any dev who is planning to fix this? Do you know a library that works for this? Better not lose more time if it seems so complex to have a fix for node telegram bot .