Я создал бота для телеграмм с помощью Python-Telegram-Bot; но не работает

Я построил телеграмм-бота с помощью Python-Telegram-Bot. Я добавил бота в группу и получил бота в группе администратора. Я определил список (mlist) для бота и поместил его в список слов. должен проверять сообщения, которые пользователи отправляют группе. И если пользователи отправляют сообщение группе, в которой есть слова, определенные в списке (mlist), бот должен удалить его (удалить сообщение).

# -*- 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) слов); Но бот не работает, и не выдает ошибку.


person Sajjad    schedule 16.08.2017    source источник
comment
Возможный дубликат Telegram Bot не работает   -  person Sean    schedule 16.08.2017
comment
@Sean Объясни подробнее   -  person Sajjad    schedule 18.08.2017


Ответы (1)


Попробуйте заменить слова в mlist на английские, и тогда посмотрите, сработает ли это. Просто чтобы проверить, не вызывает ли это проблема.

РЕДАКТИРОВАТЬ: Итак, он работает с английскими словами. Причина в том, что Telegram API поддерживает только UTF-8, а Python работает с Unicode. Юникод ≠ UTF-8. Вы должны кодировать свой текст с помощью UTF-8. Возьмите строку и добавьте:

.encode('utf-8')

person Endogen    schedule 16.08.2017
comment
@EndogenWorks с английскими словами - person Sajjad; 17.08.2017
comment
Вот что происходит: API Telegram поддерживает только UTF-8, но Python работает с Unicode. Юникод - это не то же самое, что UTF-8. См. этот пост от python-telegram-bot библиотека. - person Endogen; 18.08.2017
comment
@EndogenКакую строку кода я использую для этой команды? .encode ('utf-8'). - person Sajjad; 24.08.2017
comment
Вам нужно добавить это в строку. Итак, у вас есть строка my_string = 'سلام', а затем вы делаете my_string.encode('utf-8'). Затем вы можете добавить эту строку в список: mlist.append(my_string) - person Endogen; 24.08.2017
comment
Если это вам помогло, было бы неплохо проголосовать за мой пост :) - person Endogen; 25.08.2017