python Telegram Bot,数据问题

f87krz0w  于 2023-11-15  发布在  Python
关注(0)|答案(1)|浏览(85)

我有一个电报频道.通过机器人,我做了一个帖子四个内联按钮(1,2,3,4)和一定的解释文本的按钮,当我点击按钮在不同的职位,我得到相同的回调到所有职位:

  • 1后-(按1 -April,按2 - Bbb.等)在这里通过国家做了1. April,2. Bbb.
  • 2后-(按1 -Ablation,按2 - Bbb.等)在这里通过国家做了1. Eblation,2. Fff.

如何让callback.answer将自己的文本输出到每个帖子?例如:

  • 1篇文章(点击四个按钮之一-结果是“是的,没错,这是果戈理”)
  • 2篇文章(点击四个按钮之一-结果是“是的,做得好,这是布宁”)

在机器人的帮助下,计划发布很多帖子。所以..也许sqlite3..?但是怎么做?(python,aiogram 3)我试着做一个sqlite3数据库,但我从来没有弄清楚。

2izufjch

2izufjch1#

您可以在callback_data中编码post ID和button ID:
定义类:

class PostButtonCallbackData(CallbackData, prefix="post_btn_"):
    post_id: int
    btn_id: int

字符串
要创建按钮,请使用以下代码:

post_id = 112233 # Generate and store this unique post ID

kb_btns = []
for i in range(1, 5):
    cb_data = PostButtonCallbackData(post_id=post_id, btn_id=i).pack()
    kb_btns.append(
        [InlineKeyboardButton(text=str(i), callback_data=cb_data)]
    )

reply_markup=InlineKeyboardMarkup(inline_keyboard=kb_btns)

# use this reply_markup when you send post


要处理回调,请使用filter:

@router.callback_query(PostButtonCallbackData.filter())
async def cb_post_btn_clicked(callback: CallbackQuery, callback_data: PostButtonCallbackData):
    post_id = callback_data.post_id
    btn_id = callback_data.btn_id
    # Do whatever you need
    pass

我没有运行过这段代码,它可能包含错误,但我希望这能帮助你找到方向。

相关问题