如何使用telebot删除频道名称已更改的消息?

0 投票
1 回答
34 浏览
提问于 2025-04-13 00:30

我写了一个机器人,它每隔N分钟就会更改一次Telegram频道的名称。但是,当频道名称被更改时,Telegram会自动发送一条消息,告诉大家频道名称已经更改。

我尝试使用bot.delete_message这个命令,但我不知道怎么才能删除那条具体的消息。

1 个回答

0

如果你想删除Telegram在你更改频道名称时自动发送的消息,可以使用Telebot库里的channel_post_handler装饰器来拦截并删除这些消息。

示例代码如下:

bot.py

import telebot

bot = telebot.TeleBot('BOT_TOKEN')


@bot.channel_post_handler(content_types=['new_chat_title'])
def channel_name_changed(message):
    try:
        bot.delete_message(message.chat.id, message.message_id)
    except Exception as e:
        print("Error deleting message:", e)


if __name__ == '__main__':
    bot.polling()

changer.py

import random
from time import sleep

import telebot

bot = telebot.TeleBot('BOT_TOKEN')


def change_channel_name():
    new_name = random.choice(["Channel 1", "Channel 2", "Channel 3", "Channel 4", "Channel 5"])
    try:
        bot.set_chat_title(
            "@CHAT",
            new_name
        )
    except Exception as e:
        print("Error changing channel name:", e)


def main():
    while True:
        change_channel_name()
        sleep(10)


if __name__ == '__main__':
    main()

撰写回答