【问题标题】:When the command / start is sent to the bot, the bot should delete the stickers sent to the group; but the bot does not work当命令/开始发送给机器人时,机器人应该删除发送给组的贴纸;但机器人不起作用
【发布时间】:2017-09-18 11:58:16
【问题描述】:

我用 Python-Telegram-Bot 框架构建了一个电报机器人。我将它添加到一个组并管理该组中的机器人。

机器人代码:

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

updater = Updater(token='TOKEN')
dispatcher = updater.dispatcher

def sticker_method(bot, update):
    update.message.delete()

def sticker_delete():
    dispatcher.add_handler(MessageHandler(Filters.sticker, sticker_method))
    updater.start_polling() 
    updater.idle()

def sticker_undelete():
    dispatcher.remove_handler(MessageHandler(Filters.sticker, sticker_method))

start_command = CommandHandler('start', sticker_delete)
dispatcher.add_handler(start_command)

notdelete_command = CommandHandler('notdelete', sticker_undelete)
dispatcher.add_handler(notdelete_command)

updater.start_polling() 
updater.idle()

群创建者发送bot命令/start后,bot会删除群成员发给群的贴纸。

此外,当群组创建者命令/notdelete 将其发送给机器人时,机器人不应删除成员发送给群组的贴纸。

但是机器人不工作;当群组创建者向机器人发送群组命令/start 时,它不会删除发送到群组的机器人贴纸。

你认为问题是机器人不工作???

代码没有给出任何错误,但正如我所说,机器人不起作用。

【问题讨论】:

  • 您是否尝试删除过去的贴纸消息或创建者发送“开始”命令后将出现的贴纸消息?因为现在看起来你想做第二个。此外,您不需要两次 .start_polling().idle()。我会尝试不同的方法:如果创建者发送命令start,则保存布尔值 START = True。如果创建者发送 notdelete 设置 START = False。然后将MessageHandler(Filters.sticker, sticker_method)) 移出方法,以便过滤所有贴纸并在 START = True 时检查该方法。如果是这样,删除当前消息
  • @Endogen 我不明白你在说什么,因为我不会读或写英文,请用你自己的方法修改代码。

标签: python python-telegram-bot


【解决方案1】:

首先,确保它是超级组,而不是普通组

您的机器人需要删除消息权限,并且应该禁用隐私模式。

Bots 无法获取消息列表,只有在有人发送时才能收到,因此您需要将 Enable/Disable 状态记录到自己的数据库中,并在收到新消息时删除 Sticker。

【讨论】:

  • 组是一个超级组,超级组中的机器人管理员
  • 你的回答是假的
  • @Sean你的回答是假的
猜你喜欢
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2010-09-29
  • 2019-03-06
  • 2018-11-25
  • 2020-09-15
  • 2021-05-11
相关资源
最近更新 更多