2017-09-28 13 views
0

저는 파이썬 - 텔레 그램 - 봇 프레임 워크와 Re 모듈을 사용하여 텔레 그램 봇을 만듭니다. 봇은 회원이 그룹에 보내는 스티커를 삭제해야합니다. 즉, 단어가 start 일 때 그룹에 전송하면 그룹 start 다음에 전송 된 봇 스티커가 삭제됩니다.텔레 그램 로봇은 그룹에서 스티커를 지우지 않습니다.

내 코드 :

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


def delete_method(bot, update): 
    mlist=['/start'] 
    for i in mlist: 
     if re.match(i, update, message.text): 
      update.message.delete() 


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

그러나 로봇이 작동하지 않는, 즉, 그룹에 전송의 말씀 start를 전송 한 후,이 그룹에 전송 된 스티커를 삭제하지 않고있다.

코드는 오류를 발생시키지 않습니다. 그룹은 수퍼 그룹이며 봇은 관리자이며 메시지에 액세스 할 수 있습니다!

당신은 무엇이 문제라고 생각합니까 ???

+0

봇 그룹 관리자입니까? –

+0

@Ali Hashemi는 그룹의 봇 관리자입니다. – Sajjad

답변

0

여기이 줄은 if re.match(i, update, message.text):입니다. update 개체에 i (이 값은 /start입니다)을 검색하고 있습니다. 왜 이것이 효과가 있을지 모르겠다.

현재 메시지가 스티커인지 확인해야합니다. 메시지가 스티커 인 경우 update.effective_message.sticker은 값을 반환합니다. 그렇지 않으면 None을 반환합니다. 그래서 당신은 내가 짐작할 수있는이 스티커를 확인할 수 있습니다. 나는 그것을 테스트하지 않았습니다 :

from telegram.ext import Updater, MessageHandler, Filters 


def delete_sticker(bot, update): 
    if update.effective_message.sticker: 
     update.message.delete 


if __name__ == '__main__': 
    updater = Updater(token='TOKEN') 
    dispatcher = updater.dispatcher 
    dispatcher.add_handler(MessageHandler(Filters.all, delete_sticker)) 

    updater.start_polling() 
    updater.idle() 
+0

이것은 작동하지 않습니다 !!! – Sajjad

관련 문제