在远程机器人中处理多个用户的最佳方式是什么?

问题描述 投票:0回答:1

我正在为一个学生项目的活动制作一个电报机器人。有管理员、裁判员和选手。每个玩家都是团队的一部分,因此他们将拥有 Telegram 提供的

message.chat.id
、玩家的
team_id
和个人
player/admin/judge_id
,以及姓名、答案、分数等。他们的所有数据都将被记录在案。存储在谷歌电子表格中。然而,我很难弄清楚如何最好地确定 id 并跟踪玩家数量。我担心某些人的请求可能会重叠,导致多个人被分配相同的 id 或他们的数据被下一个人覆盖。

我需要使用异步吗?如果是这样,我正在考虑使用带有互斥锁的全局计数器。这是一个好的/有效的解决方案,还是有另一种更标准的方法来做到这一点?有没有办法在没有异步的情况下做到这一点?

我还想将用户的一些更基本的数据(例如他们的团队名称或角色)保留在附近的某个地方,这样我就不必一直在电子表格中查找它。我正在考虑创建一个

User
类来保存所有这些信息,然后为
user
处的每个人创建一个
/start
对象,该对象将传递到下一步,如下所示:
bot.register_next_step_handler(msg, set_name, user)
。再说一遍,这合理吗?

我知道这些问题看起来很愚蠢,因为 Telegram 是专门为处理这些情况而设计的,但这是我的第一个项目,我有点挣扎。谢谢)

python telegram telegram-bot telebot multiple-users
1个回答
0
投票

您可以创建一个团队类,它将再次包含具有属性的用户类 角色:选手/裁判/管理员 团队:theTeam ID:telegram.id

使用适当的 getter 和 setter。然后您可以创建一个 Team 类来存储它们。

并拥有团队: 玩家 = [用户,用户,...]

使用检查器来检查玩家是否不属于另一个团队,并且它不是法官或管理员(或者如果您希望他们是一个团队则继续)

您不需要为此使用异步,因为您不会处理大型请求,但如果您想学习使用异步,请考虑查看Aiogram

register_next_step_handlers() 如果您对此感到满意的话,可能适合这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.