我使用Python-Telegram-Bot框架和Re Module创建了一个电报机器人。
机器人应该删除成员发送给组的贴纸,也就是说,当单词start
发送给组时,它将删除在组start
之后发送的机器人贴纸。
我的代码:
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()
但是机器人不起作用,也就是说,在将发送单词start
发送给组后,它不会删除发送给该组的贴纸。
代码不会给出任何错误。该组是一个超级组,该机器人是管理员,它可以访问消息!
你认为这个问题是什么?
答案 0 :(得分:0)
这一行if re.match(i, update, message.text):
是问题所在。您正在i
对象中搜索/start
(其值update
)。我不明白为什么这应该有用。
您需要检查当前消息是否为贴纸。如果邮件是贴纸,则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()