TypeError: getattr(): attribute name must be string in sending message with inline keyboard #2652
-
Issue I am facingI'm trying to send a message with inline keyboard in job queue and got an error. Related code (simplified)def fetch_feeds(context: CallbackContext):
like = 'like/'+str(article_info['article_id'])
dislike = 'dislike/'+str(article_info['article_id'])
keyboard = [
InlineKeyboardButton("👍", callback_data=like),
InlineKeyboardButton("👎", callback_data=dislike),
]
scores_answer = InlineKeyboardMarkup(keyboard)
context.bot.send_message(chat_id=source["user_id"],
text=cast_create(article_info, True),
parse_mode=ParseMode.HTML,
reply_markup=scores_answer,
disable_web_page_preview=True)
def main():
updater = Updater(os.getenv('SCORER_TOKEN'))
dispatcher = updater.dispatcher
job_queue = updater.job_queue
job_queue.run_repeating(
fetch_feeds, interval=int(os.getenv('FEED_UPDATE_INTERVAL')), first=10, context=model)
updater.start_polling()
updater.idle() Content of Article_id i get from uuid and based on article url TracebackTraceback (most recent call last):
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/apscheduler/executors/base.py", line 125, in run_job
retval = job.func(*job.args, **job.kwargs)
File "/Users/vshiryaev/PycharmProjects/RssFeeder/scoring_bot.py", line 138, in fetch_feeds
context.bot.send_message(chat_id=source["user_id"],
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/bot.py", line 130, in decorator
result = func(*args, **kwargs)
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/bot.py", line 513, in send_message
return self._message( # type: ignore[return-value]
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/ext/extbot.py", line 199, in _message
result = super()._message(
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/bot.py", line 322, in _message
data['reply_markup'] = reply_markup.to_json()
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/base.py", line 104, in to_json
return json.dumps(self.to_dict())
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/inline/inlinekeyboardmarkup.py", line 62, in to_dict
data['inline_keyboard'].append([x.to_dict() for x in inline_keyboard])
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/inline/inlinekeyboardmarkup.py", line 62, in <listcomp>
data['inline_keyboard'].append([x.to_dict() for x in inline_keyboard])
File "/Users/vshiryaev/PycharmProjects/RssFeeder/venv/lib/python3.8/site-packages/telegram/base.py", line 51, in __getitem__
return getattr(self, item, None)
TypeError: getattr(): attribute name must be string |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
Can you provide an MWE as described here? |
Beta Was this translation helpful? Give feedback.
-
Ah, nevermind - your keyboard is a list of buttons, but InlineKeyboardMarkup expects a list of lists of buttons |
Beta Was this translation helpful? Give feedback.
-
Now, it works perfectly fine! Thanks a lot |
Beta Was this translation helpful? Give feedback.
Ah, nevermind - your keyboard is a list of buttons, but InlineKeyboardMarkup expects a list of lists of buttons