質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

AttributeError: 'CallbackContext' object has no attribute 'message'

salah0615
salah0615

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

0クリップ

32閲覧

投稿2021/04/22 11:30

編集2022/01/12 10:58

telegamについて

使用しているバージョンは
telegram: 2.7.1
python: 3.7.5
です。

python3 *.pyを実行し、telegramでbotに対して、/start と入力すると下記のようなエラーが発生します。

No error handlers are registered, logging exception.
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/telegram/ext/dispatcher.py", line 442, in process_update
handler.handle_update(update, self, check, context)
File "/usr/local/lib/python3.7/site-packages/telegram/ext/handler.py", line 160, in handle_update
return self.callback(update, context)
File "/Users/tanakakoutarou/Projects/dsbook/telegram_bot.py", line 13, in start
input = {'utt': None, 'sessionId': str(update.message.from_user.id)}
AttributeError: 'CallbackContext' object has no attribute 'message'

なぜでしょうか? 丸投げのような形になりますが、解決方法がわかる方よろしくお願いします。

一応、エラーの箇所だけコードを記載しておきます。

python

#handler.py if context: self.collect_additional_context(context, update, dispatcher, check_result) if run_async: return dispatcher.run_async(self.callback, update, context, update=update) return self.callback(update, context)

python

#dispatcher.py for group in self.groups: try: for handler in self.handlers[group]: check = handler.check_update(update) if check is not None and check is not False: if not context and self.use_context: context = CallbackContext.from_update(update, self) handled = True sync_modes.append(handler.run_async) handler.handle_update(update, self, check, context) break

python

#telegram_bot.py from telegram.ext import Updater, CommandHandler, MessageHandler, Filters # アクセストークン(先ほど発行されたアクセストークンに書き換えてください) TOKEN = "ーーーーーーーーーー" class TelegramBot: def __init__(self, system): self.system = system def start(self, bot, update): # 辞書型 inputにユーザIDを設定 input = {'utt': None, 'sessionId': str(update.message.from_user.id)} # システムからの最初の発話をinitial_messageから取得し,送信 update.message.reply_text(self.system.initial_message(input)["utt"]) def message(self, bot, update): # 辞書型 inputにユーザからの発話とユーザIDを設定 input = {'utt': update.message.text, 'sessionId': str(update.message.from_user.id)} # replyメソッドによりinputから発話を生成 system_output = self.system.reply(input) # 発話を送信 update.message.reply_text(system_output["utt"]) def run(self): updater = Updater(TOKEN) dp = updater.dispatcher dp.add_handler(CommandHandler("start", self.start)) dp.add_handler(MessageHandler(Filters.text, self.message)) updater.start_polling() updater.idle()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

BeatStar
BeatStar

2021/04/24 08:33

メッセージぐらいは読みましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。