首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要对一个不和谐的机器人的结构提出建议

需要对一个不和谐的机器人的结构提出建议
EN

Stack Overflow用户
提问于 2022-03-05 14:27:03
回答 1查看 287关注 0票数 0

什么是不和谐的角色?

角色是服务器管理员创建的组。该角色具有权限、层次结构和名称。在这种情况下,重要的是玩家可以同时引用多个参与者("ping“他们),方法是引用他们的角色,比如这个@RoleName.

上下文

我正在开发一个机器人,它向用户发布临时角色。用户承担角色,以便其他人可以对其进行平铺。角色是根据持续时间用户的愿望而设置的。机器人是用Go.编写的,整个应用程序主要由Mongo事件的处理程序和用户向bot输入的命令组成。

每次用户通过向bot输入命令来扮演一个角色时,该用户的不和谐id就会以过期时间存储在Mongo数据库中。一旦达到存储在文档中的时间,Mongo就会删除该文档(为此使用TTL索引)。然后,通过处理Mongo事件,机器人通过从用户手中删除角色来处理删除。(此外,用户可以先发制人地删除其角色。在这种情况下,角色将被删除,相应的记录将从数据库中删除。)

问题

当用户决定删除其角色时,尽管用户的记录已在用户命令处理程序中被删除,但仍会触发Mongo删除事件处理程序。因此,我认为完全可以在Mongo的事件处理程序中控制机器人。我可以在Mongo事件中这样做,而不是在与用户提供的命令相对应的处理程序中提供和删除角色。例如,要从用户那里删除一个角色,我需要从命令处理程序中的数据库中删除他的记录。然后,角色将在相应的Mongo事件处理程序中被自动删除。

我的经验不让我预见到这将如何影响未来的机器人发展,所以我请求你在这方面的意见。这是个好主意吗?如果不是,在上述情况下,如何处理被解雇的蒙古族处理人员是一个很好的方法?

我不擅长写作,所以不要羞于要求澄清。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-05 17:06:03

如果数据库是用户具有哪些角色的权限,则您的bot应用程序将充当与该权限保持不一致的桥梁。

假设您只处理数据库事件上的角色更新。在这种情况下,这意味着您的桥应用程序必须运行并正确连接到两个服务,并且在每次过期时都不会发生任何错误。否则,状态将不同步。为了正确起见,最好假设这三种服务中的任何一种或全部都可以在任何时候脱机。

为了保持您的经验响应性和一致性,您应该快速更新角色,并在必要的地方更新,以确保最终的一致性。这可能会导致冗余更新,因此检查是否已经应用了更新,并在必要时跳过它。

下面是一个更新案例的示例:

  • On bot应用程序启动:在数据库事件上更新所有用户
  • :user命令更新用户
  • :Update user (可选,但如果DB事件延迟)用户连接服务器上的
  • :Update user
  • 关于定期/后台任务:更新所有用户(可选,万一其他更新失败或角色被外部源修改)H 210F 211
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71362999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档