【问题标题】:I create a telegram bot;but dont work我创建了一个电报机器人;但不工作
【发布时间】:2017-08-10 11:18:09
【问题描述】:

我用 python-telegram-bot 创建了一个电报机器人。我已经为bot定义了一个单词列表,我想管理组中的聊天bot,即如果定义的列表中的聊天中有单词,bot会删除它。 我将机器人添加到一个组并在那里管理它,机器人应该控制发送到该组的消息,如果消息中有一个单词在 mlist 上,机器人应该删除该消息。 我的代码:

from telegram.ext import Updater
updater = Updater(token='TOKEN')
dispatcher = updater.dispatcher
mlist=['world', 'by', 'hello']

def delete_method(bot, update):
    bot.delete_message(chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs)

if message in mlist:
    delete_method(bot, update)

updater.start_polling()

# for exit
# updater.idle()

【问题讨论】:

  • 究竟是什么不起作用?机器人不删除消息?
  • "请告诉我问题是什么" 为什么不告诉我们问题是什么?
  • 嗨,欢迎来到 SO。请将您的问题缩小到给您带来问题的特定电话。您的问题目前可能不会得到很好的答案,并且可能会被关闭。请take the tour 并阅读how to askhow to create a minimal, verifiable example 以获得更好的使用本网站的结果。祝你好运!
  • 机器人被加到群里,当mlist中的词在群里和用户发帖时应该被移除;但是bot在admin群里不做!
  • 我编辑了问题

标签: python-2.7 python-telegram-bot


【解决方案1】:

您没有注册任何处理程序,因此没有任何处理。

您需要注册处理程序,更新将由该处理程序处理。

查看this的介绍。很清楚。

编辑:我给你写了一个你的代码应该如何的例子(我没有测试它,我是用手机写的)

from telegram.ext import Updater, MessageHandler
import re

def delete_method(bot, update):
    if not update.message.text:
        print("it does not contain text")
        return

    mlist=['world', 'by', 'hello']

    for i in mlist:
        if re.search(i, update.message.text):
            bot.delete_message(chat_id=update.message.chat_id, message_id=update.message.message_id)

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

【讨论】:

  • 我知道;我需要输入令牌的第二行。我以前做过,但是没有用
  • 请解释更多
  • 如果 mlist 中的单词是波斯语或拉丁语以外的其他语言,我应该在代码中添加什么?
  • ;如果列表中的单词是波斯语或拉丁语以外的其他语言,我应该在代码中添加什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2017-09-16
  • 2018-03-25
  • 2017-06-30
  • 2017-05-21
  • 2021-03-29
相关资源
最近更新 更多