telegram机器人不会从组中删除标签

2024-04-23 16:56:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python telegram bot框架和Re模块创建了一个telegrambot。 bot应该删除成员发送给组的标签,也就是说,当单词start发送给组时,它将删除在组start之后发送的bot标签。在

我的代码:

from telegram.ext import Updater, MessageHandler, Filters
import re                                                                                                                          


def delete_method(bot, update):
    mlist=['/start']  
    for i in mlist:
        if re.match(i, update, message.text):
            update.message.delete()


def main():
    updater = Updater(token='TOKEN')
    dispatcher = updater.dispatcher
    dispatcher.add_handler(MessageHandler(Filters.all, delete_method))

    updater.start_polling()
    updater.idle()


if __name__ == '__main__':
    main()
# for exit
# updater.idle()

但是bot不工作,也就是说,在将send的单词start发送到组之后,它不会删除发送到组的标签。在

代码没有给出任何错误。和该组是一个超级组,机器人是管理员,它可以访问消息!在

你觉得问题是什么???在


Tags: 代码importmainbotupdate标签delete单词
1条回答
网友
1楼 · 发布于 2024-04-23 16:56:19

这里的这一行if re.match(i, update, message.text):就是问题所在。您正在update对象中搜索i(其值为/start)。我不明白这为什么有用。在

您需要检查当前消息是否是贴纸。如果消息是贴纸,则update.effective_message.sticker将返回一个值。否则它将返回None。所以你可以用这个来检查贴纸我想-我没试过:

from telegram.ext import Updater, MessageHandler, Filters


def delete_sticker(bot, update):
    if update.effective_message.sticker:
        update.message.delete


if __name__ == '__main__':
    updater = Updater(token='TOKEN')
    dispatcher = updater.dispatcher
    dispatcher.add_handler(MessageHandler(Filters.all, delete_sticker))

    updater.start_polling()
    updater.idle()

相关问题 更多 >