2017-06-30 67 views
-5

私はコマンド/ defineを見た後に、その単語を尋ねるテレグラムボットを作りたいと思っています。 ボットから要求された後にユーザーが送信した単語を抽出したいとします。どうすればいいのですか?テレグラムのPython APIを使用して1つのメッセージを取得しますか?

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

updater = Updater(token='******************') 
dispatcher = updater.dispatcher 

def define(bot, update): 
    bot.send_message(chat_id=update.message.chat_id, text="Enter word") 
    word = '''get content of following message''' 
    definition = get_definition(word) 
    bot.send_message(chat_id=update.message.chat_id, text=definiton) 

definition_handler = CommandHandler('define', define) 

dispatcher.add_handler(definition_handler) 

updater.start_polling() 
+0

これまでのコードは試しましたか? –

+0

あなたの質問は広くなっていますので、お読みください[質問する](https://stackoverflow.com/help/how-to-ask) – eyllanesc

+0

@Sharad Bhat見逃している質問がいくつか掲載されています、完全で検証可能な例](https://stackoverflow.com/help/mcve)を参照してください。質問をして必要な回答を得る能力を高めるために、[質問のガイドライン](https://stackoverflow.com/help/on-topic)をご覧ください。また、[低品質の質問が多すぎる](https://stackoverflow.com/help/quality-standards-error)が表示された場合、アカウントには質問を禁止することができます。よく聞かれる質問は、より良い答えを引き付ける傾向があります。がんばろう! –

答えて

1

ここはあなたの男の子です。

品質の低い質問を投稿したことが通知されたにもかかわらず、私は夏休みがあるため、検索したコードを提供します。私たちはそれに直接飛び込みますか?

  • まず、pyTelegramBotAPIライブラリが必要です。
  • 次に、電文に@BotFatherを追加し、instructure #6に従います。コードネームのように、あなたのボットに固有の文字と数字のセットであるボットトークンを取得する必要があります。あなたが@BotFather経由でボットを登録した後、それはあなたにトークンを与えます。

実際、トークンはあなたが望むボットを作成するために必要な唯一のものです。

# -*- coding: utf-8 -*- 
import telebot # importing pyTelegramBotAPI library 
import time 
import sys 

bot = telebot.Telebot(token='YOUR API TOKEN') # supply your future bot with the token you have received 

@bot.message_handler(commands=['define', 'Define']) 
def echo_msg(message): 
    echo = bot.send_message(chat_id=message.chat.it, 
          text='What word would you want me to extract, sir?') 
    bot.register_next_step_handler(message=echo, callback=extract_msg) 

def extract_msg(message): 
    msg.append(message.text) 
    print(msg) 

def main_loop(): 
    bot.polling(none_stop=True) 
    while True: 
     time.sleep(1) 

if __name__ == '__main__': 
    try: 
     main_loop() 
    except KeyboardInterrupt: 
     print(sys.stderr '\nExiting by user request'\n') 
     sys.exit(0) 

さては、各ボットは、着信情報を処理するmessage_handlerを必要とする:あなたのようなボットのためのコードは、同じ論理構造に従うべきです。

あなたの場合、それはボットにリストに抽出する単語を要求するように促すコマンドです。 bot.register_next_step_handler()を定義していない場合、このコマンドはまったく何も行いません(単語を要求するという事実を除いて)。

機能extract_msg()は、ユーザが書き込んだ次の単語を追加し、msgリストをコンソールに表示します。

機能main_loop()は、停止までボットを実行し、各単語抽出後に1秒間アイドル状態にします。ボットを停止するには、Ctrl + Cを押してください。


私はこれで十分です。次のステップは、タイプ/defineまたは/Defineを追跡して、彼/彼女の単語要求を抽出することです。また、msgをもっと説明的にするか、全く異なる抽出方法を実装する方が良いでしょう。これは単に有益であり、実際にはほとんど適用できません。

ありがとうございます!

関連する問題