我可以在涉及的电报聊天本身上存储漫游器状态数据吗?

时间:2019-07-08 11:01:31

标签: flask telegram python-telegram-bot telegram-webhook telepot

我正在尝试在一个组中存储一些有关机器人对话的数据(即,该机器人管理一种基于文本的聊天室,我想保存该组是哪个“世界”和“舞台”)当时),所以我想知道您是否可以在聊天本身中存储少量数据(而不是将其保存在bot服务器端*,对于quite a lot of work来说似乎应该如此)简单)。

因此,按照这种python zen的哲学,我试图找到一种KISS方式来存储这对值,也许在电报聊天本身中,这样我就不需要在服务器端管理任何重要的数据库了。以便对聊天消息来自哪里进行分类。

*我在Flask Web应用程序中使用带有Webhook的Telepot。

1 个答案:

答案 0 :(得分:0)

所以...我只是想分享一下,我发现了一种非常荒谬但非常有效的方法(只要您不需要在其中存储私有数据,并且前提是只有bot-而不是玩家-可能会破坏聊天的描述。

机器人可以通过命令bot.getChat("@group_id").setChatDescription("@group_id","New desc")检查并更改聊天的描述,因此您实际上可以在其中保存包含所需所有值的字符串,并在以后检索它们。

在公开的情况下,我可以将当​​前游戏级别保存在描述中,例如"Level: 4",并随时通过以下方式检索它:

desc = bot.getChat("@my_game_chat")["description"]
level = desc[7:]

在这种情况下,它也可以为玩家提供线索。

使用类似的方法,您可以同时在其中保存不同的内容,甚至可能只是将其作为一串没有标签"01-21-5493"的数字而使它模糊不清

desc = bot.getChat("@my_game_chat")["description"]
world, stage, score = desc.split('-')

如果您使用固定宽度的数字,甚至可以在不相关的地方扔一些随机数,以免混淆任何可能的八卦。

PS:bot.getChat()返回这样的结构(这就是为什么我们需要["description"]):

{
'id': -2424242424242, 
'title': 'Channel Name', 
'username': 'channelusername', 
'type': 'channel', 
'description': 'Pernils i tal'
}