Как стать автором
Обновить

Комментарии 43

Ох, удачи Вам, и неугасающего энтузиазма в этой неравной битве :)
"О сколько нам открытий чудных" предстоит...

Спасибо. Это действительно интересно открывать для себя новые штуки :)

На самом деле статья очень мотивирует. Аж самому захотелось купить ноутбук, и написать какого-нибудь бота в Telegram.


P.S. — VS Code != IDE :c

IDE

Это редактор исходного кода.


Загуглите, что такое IDE.

VS Code вполне себе полноценная IDE
Ну, формально он прав, действительно ведь «не равно».
Равенство — отношение симметричное, а отношение подмножества к множеству или части к целому — нет (за исключением случаев, когда целое состоит из одной-единственной части). «Всякая селёдка — рыба, но не всякая рыба — селёдка».
Не нужно держать постоянно соединение с пользователем.
То есть, на сколько понял у вас получилась не MMORPG, а просто Online RPG?
НЛО прилетело и опубликовало эту надпись здесь
В моменте — да. Но надо пофиксить боли, а дальше уже вводить функционал в игру.

Ещё чуть-чуть, и вы заново придумаете ChatWars :)

Что-то вроде того :)

У ВВ мало общего с ЧВ. В статье же указан идейный вдохновитель.

А вы могли бы и вернуться туда)) Там и изменений прибавилось, и отряд всегда найдём

Спасибо конечно, но как-то наботоводился наигрался вдоволь давно уже =)

Сразу вспомнил волшебные аббревиатуры IRC и MUD.

Да, человек переизобрел MUD.

Удивительно, но с Heroku столкнулся недавно. Идея очень интересная. С заливкой файлов на сервер не должно быть никаких проблем, если используете git. А если до сих пор не используете систему контроля версий, то очень советую это сделать.
Главный минус Heroku, что ваш сервер уходит спать, если к нему не обращаются некоторое время, а после перезапуска нужно время на развёртывание. Для того, чтобы потестить — самое то, а вот для постоянного использования уже не очень.

В томже VisualCode есть Remote debugging / Remote server для удаленного редактирования и отладки кода. Очень удобно, хотя и сыровато.
Уход в сон — это только на бесплатном тарифе

Уход в сон на самом деле не очень то и критично.
Он засыпает, если нет запросов в течение 30 минут.
А просыпается довольно быстро на самом деле.
Средний бот для телеграмма просыпается за 5 — 10 секунд. Что не очень критично на первых порах, как на мне

Увидел скрин из Линейки — прослезился=(
Желаю успехов и с нетерпением жду бета версию вашего «игробота»:)

Ngrok очень хорошо подойдет для локальной разработки с вебхуками.
Почему именно Redis для хранения состояния, а не тот же PostgreSQL? Вопрос перфоманса уже остро встал?
Проблема также может быть в достижении лимитов отправки сообщений ботом одному пользователю. Нужно очень сильно обратить на них внимание при проектировании сервера игры в части отправки сообщений игрокам.

Redis взял для разнообразия в практике. Также она идеально подходит для этой задачи

Да и Telebot (pyTelegramBotAPI) в 2020 году – не лучший вариант, если честно :)
Библиотека почти не развивается, поллинг как был «кривым» ещё в 2015, так и остался.

Лучший вариант python-telegram-bot?

Никогда не работал с python-telegram-bot, но по описанию на гитхабе выглядит интересно и «по-взрослому». Я с середины 2019 года окончательно перелез с pyTelegramBotAPI на aiogram и вздохнул с облегчением. Нормальный поллинг, много «вспомогательных» функций и быстрое обновление после выхода новых версий Bot API. Возможно, в python-telegram-bot то же самое, но, повторюсь, не щупал ту библиотеку.

У меня чисто практический интерес: пишу ботов под мессенджеры. В частности pyTelegramBotAPI пользуюсь давно. Посмотрел рекомендованную вами библиотеку aiogram. Ассинхронность приветствую.

Репозитории у обоих библиотек обновляются регулярно. У aiogram в разы меньше использований и наблюдателей за репозиторием, значит либо она только появилась, либо pyTelegramBotAPI все-таки проверен временем и более надежен. В итоге я растерян, стоит ли совершать апгрейд до aiogram.

Что именно в pyTelegramBotAPI вас смущает или основная проблема «вылеты polling()»? Или что-то еще?

Помогите разобраться.

Субъективно по опыту использования:
1) у pyTelegramBotAPI «сломан» поллинг по умолчанию. Малейшие проблемы на стороне Telegram – бот падает. Сообщество научилось затыкать это дело костылями, но всё же. aiogram самостоятельно ловит подобные вещи и не даёт боту упасть.
2) Frank Wang, автор pyTelegramBotAPI, по-видимому, забил на библиотеку, сейчас кто-то другой в неё вносит изменения. Но она всё равно отстаёт в актуальности. У aiogram хорошее русскоговорящее community (вместе с разработчиком), апдейты выходят быстрее.
Кстати, если посмотрите коммиты у pyTelegramBotAPI, то приличная часть из них касается только Readme, куда добавляются ссылки на разных ботов, а не «исправления/улучшения» кодовой базы.
3) У aiogram больше вспомогательных методов. Например, вместо bot.send_message(), куда надо передавать chat_id, можно сделать ответ (как reply, так и просто в тот же чат) через message.reply()/message.answer() над объектом Message. Аналогично для колбэков, инлайна и т.д. Банально удобнее и выглядит симпатичнее.
4) aiogram — это фреймворк, т.к. с ним можно накрутить такой цирк с конями, что аж закачаешься. Всякие middlewares, кастомные фильтры и прочее. Короче, штука монструозная по возможностям, а не просто «обёртка».


Теперь о минусах.
1) в aiogram сложнее разобраться. Не только потому, что требуется понимание asyncio, а ещё из-за отсутствия нормальной документации на текущие версии 2.х (разработчик обещает, что в 3.х всё будет задокументировано). Благо есть сообщество, которое может подсказать.
2) Это субъективный минус, но для меня принципиальный. Например, поле date у объекта Message. По документации Telegram, это просто число (unixtime). По мнению разработчика, это тип DateTime. На мой взгляд, это неправильно так вольно интерпретировать исходный API, ну да ладно.

Спасибо детальный ответ, еще вашего сайта учился ботов писать)
Буду присматриваться к aiogram.

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


Надеюсь что вам хватит мотивации. ИМХО мотивация это главное, а знания приложатся.
Лишь бы как у меня — хотелки не росли быстрее этих самых знаний.

Интересно было бы почитать хоть что-то про саму игру, про игровые механики.
Учел. В след посте будет
Погугли на тему Rising Force online для телеграма. Это типа текстовая пошаговая игра по мотивам оригинальной RFOnline. В текстовую версию не играл, упарывался по обычной десктопной, в свое время. Но текстовая в телеге вроде шустро бегала, так что посмотри как устроена, подчерпни ией
Скрин из линейки напомнил мне подростковые годы, когда еще в школе учился, на кнопочном телефоне зависал в текстовую версию линейки на разных сайтах. Все уроки в телефоне висел… Помню день выпускных экзаменов, а мне в игре модератора дали, и что-то совсем не до учебы было. Похоронил себе аттестат :)

Я тут решил бота быстренько сделать, на Node.js конечно. У меня уже был опыт, и прошлая реализация была очень громоздкой и сложной для масштабирования. Хочется писать декларативно, как на фронте, желательно на JSX и с типами. Искать долго не пришлось, urban-bot все это умеет, использует слой абстракции, и сейчас работает для Telegram и Slack. Кажется, единственный живой репозиторий с активной разработкой из модулей подобного плана. У них есть и бойлерплейт-проект, все работает сразу, локально, но через VPN.

Текстовая ММОРПГ в мессенджере… Довольно интересная вещь. Впрочем, идея не нова, похожая игра есть ВКонтакте, называется «Подземелья колодца» (советую заглянуть, там довольно любопытная механика развития персонажа, плюс очень интересно наблюдать за развитием игры).
А Вам могу пожелать удачи в этом нелёгком труде
P.S. Создатель игры по моим подсчётам рубит с донатов хорошие деньги :)
Интереснее было бы взять любой MUD-проект и просто прикрутить к нему ввод через telegram.
Подскажите, а в чем проектировали схему БД?
sqldbm.com
Спасибо за статью, я в своё время тоже вдохновился именно этой игрой и спустя некоторое время начал писать свою (@DaysZBot — можно пощупать тут).
Меня больше всего тогда поразило, как на картинке карты отмечается локация игрока. Это придавало экшна в текстовой игре!
Автору желаю успеха на этом непростом пути. Помимо технических навыков, там ещё много чему придётся учиться)
Спасибо :)
Есть же опен-сорсный PyCharm Community Edition
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории