2017-08-16 155 views
0

我用Python-Telegram-Bot構建了一個電報機器人。我將機器人添加到一個組中,並在管理組中獲得了機器人。 (bot)的列表(mlist),並將其放入單詞列表中。機器人應檢查用戶發送給該組的消息。並且如果用戶向該列表中定義的單詞(mlist)發送消息,在那裏,機器人必須刪除它(刪除消息)。我用Python-Telegram-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)字樣的消息) ;但機器人不工作,不給錯誤。

+0

的[電報漫遊器工作(https://stackoverflow.com/questions/45660498/telegram-bot-is-not-working) – Sean

+0

可能的複製@Sean解釋更多 – Sajjad

回答

0

嘗試用英文字詞替換mlist中的字詞,然後查看它是否有效。只是爲了檢查是否導致問題。

編輯:所以它適用於英文單詞。原因是,Telegram API只支持UTF-8,但Python可以使用Unicode。 Unicode≠UTF-8。你必須用UTF-8編碼你的文本。有一個字符串,並添加:

.encode('utf-8')

+0

@EndogenWorks用英文單詞 – Sajjad

+0

以下是發生的情況:電報API僅支持UTF-8,但Python 支持Unicode。 Unicode與UTF-8不一樣。請參閱python-telegram-bot庫中的[this post](https://github.com/python-telegram-bot/python-telegram-bot/issues/27)。 – Endogen

+0

@EndogenHow我可以在代碼中使用它嗎? – Sajjad

相關問題