Могу ли я хранить данные о состоянии бота в самом чате для телеграммы? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь сохранить немного данных о разговоре бота в группе (т. Е. Бот управляет своего рода текстовой комнатой чата, и я хочу сохранить, какой "мир" и "сцена" группы)в то время), и поэтому мне было интересно, можете ли вы просто сохранить этот небольшой объем данных в самом чате (вместо того, чтобы сохранять его на стороне сервера бота *, что кажется довольно большой работой для чего-то, что должно быть таким простым).

Итак, следуя этой философии Python Zen, я пытаюсь найти способ KISS для хранения этой пары значений, возможно, в самом чате телеграммы, так что я неМне не нужно управлять какой-либо серьезной базой данных на стороне сервера, чтобы определить, из каких источников чата.

* Я использую телепот с webhook в веб-приложении Flask.

1 Ответ

0 голосов
/ 08 июля 2019

Итак ... Я просто хотел поделиться, что нашел очень смешной, но довольно эффективный способ сделать это (до тех пор, пока вам не нужно хранить там личные данные, и при условии, что только бот - а не игроки - могут связываться с описанием чата).

Боты могут проверять и изменять описание чата с помощью команд 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'
}
...