提问人:QWERTYZ PB 提问时间:11/15/2023 更新时间:11/15/2023 访问量:50
Telegram Bot,数据问题
Telegram Bot, problems with data
问:
我有一个电报频道。通过机器人,我用四个内联按钮(1、2、3、4)和按钮的一定解释文本发布帖子,当我点击不同帖子中的按钮时,我得到所有帖子的相同回调:
1 柱 - (按 1 - Aaaa,按 2 - Bbb ...等)这里通过国家做了 1.啊,2。呸��
2 柱 - (按 1 - Aaaa,按 2 - Bbb ...等)这里通过国家做了 1.哎呀,2。呜......
如何使callback.answer向每个帖子输出自己的文本?例如:
- 1 个帖子(点击四个按钮之一 - 结果是“是的,没错,是果戈理”)
- 2 个帖子(单击四个按钮之一 - 结果是“是的,干得好,是 Bunin”)
在机器人的帮助下,计划发布大量帖子。所以。。也许sqlite3..?但是如何? (蟒蛇,aiogram3) 我试图制作一个sqlite3数据库,但我从来没有弄清楚。
答:
0赞
Motov Yurii
11/15/2023
#1
您可以在callback_data中对帖子 ID 和按钮 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
要处理回调,请使用过滤器:
@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
我没有运行此代码,它可能包含错误,但我希望这能帮助您找到方向。
评论
0赞
QWERTYZ PB
11/16/2023
这解决了问题,但是如果程序中断(ctrl + c),则不会保存数据(但无论如何都要感谢
0赞
Motov Yurii
11/16/2023
当然,您应该使用 datbase 来存储有关帖子的信息。使用sqlite非常简单。您可以在此处找到文档:docs.python.org/3/library/sqlite3.html#sqlite3-tutorial
0赞
QWERTYZ PB
11/16/2023
谢谢,我会努力的
评论