Pull to refresh

Comments 58

Не особо много работал с ботами в телеграме, поэтому такой вопрос: бот запоминает состояние? То есть я могу начать игру сейчас, сделать пару ходов и продолжить через месяц?

Да, он сохраняет каждого пользователя в отдельный файл (чтобы не нагружать БД и не потерять в случае падения БД)

интересное обоснование отказа от БД

БД есть, но об этом расскажу в следующем посте

Что же там за БД такая, что файлы лучше чем БД?

MongoDB, но почему был такой отказ я расскажу в следующем посте (:

база к телеграму отношения не имеет — бот это самостоятельная программа, которая рассылает/принимает сообщения через апи, т.е. база, файлы и всё остальное — это на откуп разработчика.

sqlite: файл-бд
ну или бд-файл
не потеряется и можно на флешку project.db скопировать ))))


по боту. немного скучновато. Есть книги-игры, возьмите готовую, помню в детстве играл в "Подземелья Черного Замка". Там порядка 1000 игровых ситуаций в дереве.

Осторожнее с фалами, их количество вообще говоря — ограничено, точнее количество инодов. Да и работать с большим количеством файлов — так себе занятие.

Рано или поздно все урется в возможности HDD, и тогша ваш лот будет отвечать по 10 секунд каждому пользователю. А если файлов будет миллион, то бот будет только 30 минут открывать один файл

Автозамена…
Урется — упрется
Тошда — тогда
Лот — бот

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

Там сейчас 11к файлов и они занимают 50 мегабайтов. Искрине верю, что место не закончится в ближайшее время (:

Чтобы найти лучшего игрока, или игроков с именем на T* вам придется пройти все 11000 файлов. Это огромная нагрузка на HDD. Да, все начинают с файлов, но надо обязательно переходить на БД. Ничего страшного признаться, что вы не знаете их преимуществ (а иначе бы точно перешли бы на них изначально). БД позволяют выдерживать самую первую нагрузку — нагрузку на диск, и это как раз ваш случай.

Да даже загрузить последние команды пользователя у вас будет уходить по несколько секунд перегрузки HDD, а значит остальные пользователи будут ждать бота, и повторять команды. Все это будет еще больше перегружать бота как снежная лавина, и в итоге вам нужно будет что-то делать.

И дело вовсе не в размере файлов, а в их количестве

По 30 сообщений/секунду: можно например плодить ботов, а все боты будут общаться с одним приложением на стороне сервера.
и будет 30 разных аккаунтов бота для пользователей, и какой из них рекламировать?
Получится как с «Проблемы с доступом к Джойказино? Добавьте цифру 1 названию сайта»
рекламировать основной, а там когда есть проблемы делать рассылку, что тормоза связаны с ограничениями телеграм. Можно оставаться тут с тормозами или регнуться в таком-то боте где места есть и всё быстро.
Основной бот перекидывает на любой свободный бот

Каждый лишний клик юзера заставляет юзера уходить, что не круто

Можно сделать главного бота как «Центр управления подземельями» или «Выбор проводника подземелья». Обставить в виде антуража. Снижение ограничений + масштабируемость на выходе. Хоть это и не так красиво, как всего один бот.
Да. Просто, такой же выход, как и в популярных мморпг — шардирование с выбором шарда перед входом… Да, будут запоминаться левые боты в телеграме, но увы, всё таки это в первую очередь мессенжер

Отступы табами в питоне?! Но как же PEP8...

Привычка осталась, код вообще написан по собственном стайл гайду и это нужно будет исправлять

куча плюсов за кучу отсылок… порадовали в выходные =)
Интересно было бы текущие (аля Былины) портировать в телеграм

ну в телеграмме есть много MUD игр, данная игра не единственная, вот еще есть

Интересно, а вот популярная в IRC игра Арена уже есть в Телеграм?

Как говорится, все идет по кругу. Раньше игры были текстовые. Потом 2d, 3d, потом на планшетах и телефонах, потом игры в браузерах на любую платформу. Сейчас мы видим игры текстовые в Телеграмме, а потом Телеграмм будет со своей песочницей для запуска игр на любом телефоне. Ну а потом снова все будет в браузерах, который есть у всех, в отличии от мессендеров

Ага) кстати, месяц назад примерно Телеграмм и так вывел новое обновление с быстрым запуском HTML страниц прямо из Телеграмм. Так-что мессенжер-комбайн все-в-одном вот вот и будет.

Так-что мессенжер-комбайн все-в-одном вот вот и будет.

Уже...Emacs называется.

В Телеграме уже есть поддержка своей платформы игр, для примера есть бот GameBot. Хотя по сути эти игры — браузерные, просто с интеграцией Телеграма.
UFO just landed and posted this here

Спасибо за хороший рассказ. Сам писал бота-калькулятор. Телеграмм прекрасен.

Бывает еще такое когда быстро нажимаешь на инлайн кнопки иногда появляется ошибка, что клавиатура не модифицирована, тоже не знаю как с этим бороться.
Ну эксепшен у бота возникает.
Эээ, не справляется ваш бот :-)

image
Скоро нас ждет возрождение MUD'ов?
Кстати, вполне себе вариант.
На самом деле игра жутко странная, молитва рассказчику, последующий сбор мороженного и его продажа позволяет получить со старта бесконечные деньги, которые дают бесконечное всё остальное. Не то бы это было так уж важно, но настоящий манчкин вполне может зависнуть в трёх действиях и тупо набирать предметы и деньги.

Собственно я так и делаю.

Ещё можно продать душу дьяволу за условно бесконечные деньги и магическую силу.
Только, наличие денег и силы не мешает потом умереть.

UFO just landed and posted this here
А почему использование Call-back кнопок не позволяет сохранять историю сообщений? Историю же вы все равно храните самостоятельно у себя на сервере в любой удобной вам форме. В чем проблема преобразовать callback_data в текст сообщения и записать это как обычный месседж от пользователя? Не совсем понятна правда что имела в виду техподдержка когда говорила об использовании этих кнопок, ведь они заменят собой действия пользователя — который вместо того чтобы присылать сообщение будет нажимать на кнопку, и на количество отправляемых сообщений от бота к пользователю это никак не повлияет.

Полагаю, что помочь может использование editMessageText и т.д. по нажатию на инлайн кнопку, поскольку в данном случае отправки нового сообщения не произойдет, а так же по возможности использовать answerInlineQuery для уведомлений разного характера, которые не обязательно отправлять сообщением. У нас в боте проблем с лимитом на отправленные сообщения не возникало, однако в районе половины всех ответов пользователю у нас уходят именно как editMessage по инлайн-кнопке.

Да, поддержка именно это и предлагала.
Мы не храним на сервре историю сообщений. Только данное состояние пользователя.

Помнится, добавил его себе пару месяцев назад, по совету друга. Тогда ещё подумал: «Забавная штука, будет чем время скоротать!»
Но, к сожалению, бот решил мне не отвечать. Вообще. Совершенно.
К счастью, да.
Рад, что вспомнил о нём благодаря посту.
Спасибо. :)
Бот слоупок, иногда секунд по 20 думает
Автор, а вы не планируете реализовать поддержку сообщений на естественном языке, чтобы не нажимать на кнопки, а пытаться парсить простые предложения? Так можно создать иллюзию полной свободы действий и заложить кучу секретов и пасхалок)

Да, это есть в планах, но не в самом высоком приоритете, хотя и хотелось бы (:

Sign up to leave a comment.

Articles