Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

My bot can't get 'new_chat_members' event - only working for bots created with botfather for testing, not real users #1161

Open
bluetyphoon77 opened this issue Jan 8, 2024 · 34 comments

Comments

@bluetyphoon77
Copy link

bluetyphoon77 commented Jan 8, 2024

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.

@bluetyphoon77 bluetyphoon77 changed the title My bot can't get 'new_chat_members' event - only working for bots crted My bot can't get 'new_chat_members' event - only working for bots created with botfather for testing, not real users Jan 8, 2024
@VDS13
Copy link
Contributor

VDS13 commented Jan 9, 2024

Hello.
Are administrator rights granted to the bot?

@VDS13
Copy link
Contributor

VDS13 commented Jan 9, 2024

Without administrator rights, it does not track this event.

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 9, 2024

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?

@bluetyphoon77
Copy link
Author

Hello. Are administrator rights granted to the bot?

Yes they already are

@VDS13
Copy link
Contributor

VDS13 commented Jan 10, 2024

Is the group public or private?

@bluetyphoon77
Copy link
Author

@VDS13
Hey Dmitry, it is public

@VDS13
Copy link
Contributor

VDS13 commented Jan 10, 2024

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?

@bluetyphoon77
Copy link
Author

yes exactly ! i agree it is weird :)
here is the group: https://t.me/Souffles_Magiques

@VDS13
Copy link
Contributor

VDS13 commented Jan 10, 2024

Show a piece of code from the beginning to the new_chat_members event handler.

@dev-anshu
Copy link

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.

@VDS13
Copy link
Contributor

VDS13 commented Jan 11, 2024

There are no others in the code before this handler (let's say bot.on('message', ...))?

@dev-anshu
Copy link

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

@VDS13
Copy link
Contributor

VDS13 commented Jan 11, 2024

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)
});

@dev-anshu
Copy link

dev-anshu commented Jan 11, 2024

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.

@bluetyphoon77
Copy link
Author

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...');

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 11, 2024

Obviously I'm not the only one with this problem. Telegram maybe changed something and your event handler has to be updated ?

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 11, 2024

@dev-anshu
for me adding a test bot created with botfather is working ! Event is triggerd. But any other bot or real user not.

@Sp3rick
Copy link
Contributor

Sp3rick commented Jan 13, 2024

that's weird, anyway you can try go to botFather, use /mybots -> select your bot -> Gruop Privacy -> Turn off

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 13, 2024

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?

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 17, 2024

Is there any dev knowing if the code is still working ?
@yagop @GochoMugo @kamikazechaser @danielperez9430 ?
Cheeers

@danielperez9430
Copy link
Collaborator

@danielperez9430
Copy link
Collaborator

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.

@IscoV
Copy link

IscoV commented Jan 17, 2024

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)
})

solution_event_new_members

This code would return something similar to the following image

output_similar_edit

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 19, 2024

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

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 19, 2024

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...');

@IscoV
Copy link

IscoV commented Jan 19, 2024

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.

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 19, 2024

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 ?

@IscoV
Copy link

IscoV commented Jan 20, 2024

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"]

@nguyennhukhanh
Copy link

'new_chat_members' event sometimes works, sometimes it doesn't

@bluetyphoon77
Copy link
Author

'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 .

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 29, 2024

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"]

Thanks but I don't understand what you mean?
I just have to do this one time and then new members event will work when my script is launched? Thanks a lot 🙏

@bluetyphoon77
Copy link
Author

bluetyphoon77 commented Jan 31, 2024

Seems there is no solution till now.
Are the main devs working on fixing this?
I'll start using telegraf in the meantime, and if it works I'll share it to you all. Better use something that works and well supported till fixes are coming.

Cheers

@cryptocasco
Copy link

cryptocasco commented May 3, 2024

hey all, I confirm there is something weird regarding the messages of the users who join in a group. Until two days ago the messages were showed, now they aren't. The result is that the following function to ban users who join the group and forward a message doesn't work:

def is_new_group_member(chat_id, user_id):
  return user_id in new_group_members.get(chat_id, [])

async def handle_new_user(update: Update, context: CallbackContext):
    chat_id = update.message.chat.id
    new_users = update.message.new_chat_members
    for user in new_users:
        if user.id not in new_group_members.get(chat_id, []):
            if chat_id not in new_group_members:
                new_group_members[chat_id] = []
            new_group_members[chat_id].append(user.id)

async def handle_forwarded_message(update: Update, context: CallbackContext) -> bool:
    user_id = update.message.from_user.id
    chat_id = update.message.chat.id
    message_id = update.message.message_id
    if update.message.forward_date and is_new_group_member(chat_id, user_id):
        try:
            await context.bot.ban_chat_member(chat_id, user_id)
            await context.bot.delete_message(chat_id, message_id)
            await context.bot.send_message(chat_id, "User has been banned")
            await context.bot.send_message(user_id, "If you think it's an error")
            # Remove the user from the new members list to prevent repeated actions
            new_group_members[chat_id].remove(user_id)
            return True
        except Exception as e:
            print(f"Failed to ban user or delete message: {e}")
            return False
    return False
Does anyone know how to solve and make this function working properly always?

@Sp3rick
Copy link
Contributor

Sp3rick commented May 6, 2024

Solution here: #1139 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants