2017-09-13 9 views
0

필자는 Python-Telegram-bot 모듈을 사용하여 텔레 그램 봇을 만들었습니다. 이제는 30 일만 작동하도록 설정하려고합니다. 즉, 사용자가 /start을 봇에 보냈을 때 봇은 30 일 동안 중단됩니다 내 코드 :사용자 당 30 일 동안 만 작동하고 거기서 멈추는 전보 봇을 만드는 방법은 무엇입니까?

# -*- coding: utf-8 -*- 
from telegram.ext import Updater, MessageHandler, Filters, CommandHandler 
import re                               


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

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


    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 start_method(bot, update): 
    bot.send_message(chat_id=update.message.chat_id, "This bot only works for 30 days") 

def main(): 
    updater = Updater(token = 'TOKEN') 
    dispatcher = updater.dispatcher 
    dispatcher.add_handler(MessageHandler(Filters.all, delete_method)) 

    start_command = CommandHandler('start', start_method) 
    dispatcher.add_handler(start_command) 

    updater.start_polling() 
    updater.idle() 

if __name__ == '__main__': 
    main() 
# for exit 
# updater.idle() 

봇이 각 사용자별로 30 일 후에 작동을 멈추게하려면 어떻게해야합니까? 코드를 어떻게 추가해야합니까?

+1

chat_id (사용자 식별)와 그의 등록일을 데이터베이스에 저장하고 30 일이 지난 경우 메시지 확인을 보내기 전에 30 일이 지나면 메시지를 보내지 마십시오 (또는 "이 봇을 더 이상 사용할 수 없습니다"). – newsha

+0

@newsha \t 영어가 잘 못되어서 당신이 말한 커먼을 읽을 수 없습니다. 제 코드를 수정하십시오. - – Sajjad

답변

1

처음으로 사용자가 봇을 시작하면 자신의 전보 ID와 함께 데이터베이스에 타임 스탬프를 기록해야합니다.

예를 들어 INT 기본 키와 첫 번째 사용을위한 타임 스탬프가있는 테이블을 생성합니다.

봇이 수신하는 모든 "/ start"명령에 대해 ID와 타임 스탬프를 테이블에 삽입합니다 (이미 존재하는 경우).

메시지가 봇에 도착할 때마다 30 일이 경과했는지 여부를 확인합니다.

+0

@ 91DarioDev 나는 무엇을 해야할지 정확히 이해하지 못합니다. 가능한 경우 코드를 수정하십시오. 정말 고맙습니다. – Sajjad

+0

문제를 해결하는 방법을 완벽하게 설명하는 두 가지 유용한 답변 (1 답변, 1 의견). 당신이 전혀 아무것도 이해하지 못한다면 커뮤니티가 할 수있는 또 다른 것?! 여기 또는 질문에 정확히 무엇이 문제인지 자세히 설명해주십시오 ... – nostradamus