【问题标题】:I built a telegram bot with Python-Telegram-Bot;But do not work我用 Python-Telegram-Bot 构建了一个电报机器人;但是不工作
【发布时间】:2017-08-16 11:13:14
【问题描述】:

我用 Python-Telegram-Bot 构建了一个电报机器人。我将机器人添加到了一个组中,并将机器人放在了管理员组中。我为机器人定义了一个列表 (mlist) 并将其放入单词列表中.bot应该检查用户发送到组的消息。如果用户向列表(mlist)中定义的单词所在的组发送消息,则bot必须删除它(删除消息)。

# -*- coding: utf-8 -*-
import os, sys
from telegram.ext import Updater, MessageHandler, Fliters
import re


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

    mlist=['سلام', 'شادي']


   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()
# for exit
# updater.idle()

(机器人应该删除发送到组并包含列表(mlist)单词的消息) ;但是bot不工作,也不报错。

【问题讨论】:

标签: python-2.7 python-telegram-bot


【解决方案1】:

尝试将mlist 中的单词替换为英文单词,然后看看是否有效。只是为了检查是否是导致问题的原因。

编辑:所以它适用于英文单词。原因是 Telegram API 仅支持 UTF-8,但 Python 使用 Unicode。 Unicode ≠ UTF-8。您必须使用 UTF-8 对文本进行编码。取一个字符串并添加:

.encode('utf-8')

【讨论】:

  • @EndogenWorks 用英文单词
  • 发生了什么:Telegram API 仅支持 UTF-8,但 Python 使用 Unicode。 Unicode 与 UTF-8 不同。请参阅 python-telegram-bot 库中的this post
  • @Endogen 这个命令我使用哪一行代码? .encode('utf-8')
  • 您需要将其添加到字符串中。所以你有一个字符串my_string = 'سلام',然后你做my_string.encode('utf-8')。然后您可以将该字符串添加到列表中:mlist.append(my_string)
  • 如果这对你有帮助,我会很高兴支持我的帖子 :)
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 2021-12-06
相关资源
最近更新 更多