2016-07-03 6 views
1

Ich habe diese open-source code von GitHub heruntergeladen, die in Python geschrieben ist (das bin ich ziemlich neu), wollte ich meinen Bot eine Custom-Tastatur haben statt zu lassen Benutzer sagen, was immer sie wollten. zum Beispiel, wenn Benutzer den Chat mit meinem Bot starten, werden sie automatisch senden /start und wenn dies passiert, ich möchte mein bot ihnen zwei bis drei Optionen ['Option One'], [Option Two], auf der Tastatur, wenn sie eine dieser Optionen wählen, möchte ich völlig verschiedene Optionen haben (zum Beispiel ['Plan A'], ['Plan B'],). Und wieder, wenn sie eines von ihnen wählen, bekommen sie verschiedene Optionen auf ihrer Tastatur und so weiter.Telegram Bot: Benutzerdefinierte Tastatur [Python]

class WebhookHandler(webapp2.RequestHandler): 
def post(self): 
    urlfetch.set_default_fetch_deadline(60) 
    body = json.loads(self.request.body) 
    logging.info('request body:') 
    logging.info(body) 
    self.response.write(json.dumps(body)) 

    update_id = body['update_id'] 
    try: 
     message = body['message'] 
    except: 
     message = body['edited_message'] 
    message_id = message.get('message_id') 
    date = message.get('date') 
    text = message.get('text') 
    fr = message.get('from') 
    chat = message['chat'] 
    chat_id = chat['id'] 

    if not text: 
     logging.info('no text') 
     return 

    def reply(msg=None, img=None): 
     if msg: 
      resp = urllib2.urlopen(BASE_URL + 'sendMessage', urllib.urlencode({ 
       'chat_id': str(chat_id), 
       'text': msg.encode('utf-8'), 
       'disable_web_page_preview': 'true', 
      })).read() 

     else: 
      logging.error('no msg or img specified') 
      resp = None 

     logging.info('send response:') 
     logging.info(resp) 

    if text.startswith('/'): 
     if text == '/start': 
      reply('Bot enabled') 
      setEnabled(chat_id, True) 
     elif text == '/stop': 
      reply('Bot disabled') 
      setEnabled(chat_id, False) 

     else: 
      reply('That ain\'t been coded yet.') 

Wie gesagt ich Pyhton Jungfrau bin, und ich würde so dankbar, wenn Sie Ihren Code, um den Code angewandt, die über diesem Text ist, anstatt mir Ideen zu geben (was würde ich nicht wissen, wie um sie zu benutzen und die Arbeit zu erledigen!).

Antwort

2

Zuerst empfehle ich Ihnen, ein Modul zu verwenden, um damit zu arbeiten. Da Sie neu sind, könnte die python-telegram-bot Ihnen helfen.

Nun, vorausgesetzt, Sie es verwenden, haben Sie zwei Möglichkeiten:

  1. Sie können eine Tastatur erstellen, in dem die Optionen Befehle sind.

  2. Erstellen Sie Textoptionen, und verwenden Sie Regex, um sie zu filtern.

    def start(bot, update): 
        kb = [[telegram.KeyboardButton("Option 1")], 
          [telegram.KeyboardButton("Option 2")]] 
        kb_markup = telegram(chat_id=update.message.chat_id, 
             text="your message", 
             reply_markup=kb_markup) 
    
    start_handler = RegexHandler('some-regex-here', start) 
    dispatcher.add_handler(start_handler) 
    

Sie können jedoch den Benutzer senden andere Nachricht nicht verhindern, er will. Sie können die Nachrichten nur ignorieren und nur auf Befehle oder Tastaturantworten antworten.

Verwandte Themen