Комментарии 43
Ох, удачи Вам, и неугасающего энтузиазма в этой неравной битве :)
"О сколько нам открытий чудных" предстоит...
На самом деле статья очень мотивирует. Аж самому захотелось купить ноутбук, и написать какого-нибудь бота в Telegram.
P.S. — VS Code != IDE :c
Не нужно держать постоянно соединение с пользователем.То есть, на сколько понял у вас получилась не MMORPG, а просто Online RPG?
Ещё чуть-чуть, и вы заново придумаете ChatWars :)
Сразу вспомнил волшебные аббревиатуры IRC и MUD.
Удивительно, но с Heroku столкнулся недавно. Идея очень интересная. С заливкой файлов на сервер не должно быть никаких проблем, если используете git. А если до сих пор не используете систему контроля версий, то очень советую это сделать.
Главный минус Heroku, что ваш сервер уходит спать, если к нему не обращаются некоторое время, а после перезапуска нужно время на развёртывание. Для того, чтобы потестить — самое то, а вот для постоянного использования уже не очень.
Уход в сон на самом деле не очень то и критично.
Он засыпает, если нет запросов в течение 30 минут.
А просыпается довольно быстро на самом деле.
Средний бот для телеграмма просыпается за 5 — 10 секунд. Что не очень критично на первых порах, как на мне
Желаю успехов и с нетерпением жду бета версию вашего «игробота»:)
Ngrok очень хорошо подойдет для локальной разработки с вебхуками.
Почему именно Redis для хранения состояния, а не тот же PostgreSQL? Вопрос перфоманса уже остро встал?
Проблема также может быть в достижении лимитов отправки сообщений ботом одному пользователю. Нужно очень сильно обратить на них внимание при проектировании сервера игры в части отправки сообщений игрокам.
Да и Telebot (pyTelegramBotAPI) в 2020 году – не лучший вариант, если честно :)
Библиотека почти не развивается, поллинг как был «кривым» ещё в 2015, так и остался.
Никогда не работал с python-telegram-bot, но по описанию на гитхабе выглядит интересно и «по-взрослому». Я с середины 2019 года окончательно перелез с pyTelegramBotAPI на aiogram и вздохнул с облегчением. Нормальный поллинг, много «вспомогательных» функций и быстрое обновление после выхода новых версий Bot API. Возможно, в python-telegram-bot то же самое, но, повторюсь, не щупал ту библиотеку.
Репозитории у обоих библиотек обновляются регулярно. У 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, ну да ладно.
Эх, сколько я уже проектов в стол похоронил… Тоже хочется сразу и многого, а мотивации не хватает, что бы сделать с таким-то замахом, более менее приятный прототип. А потом интерес угасает, и здравствуй новый проект.
Надеюсь что вам хватит мотивации. ИМХО мотивация это главное, а знания приложатся.
Лишь бы как у меня — хотелки не росли быстрее этих самых знаний.
Я тут решил бота быстренько сделать, на Node.js конечно. У меня уже был опыт, и прошлая реализация была очень громоздкой и сложной для масштабирования. Хочется писать декларативно, как на фронте, желательно на JSX и с типами. Искать долго не пришлось, urban-bot
все это умеет, использует слой абстракции, и сейчас работает для Telegram и Slack. Кажется, единственный живой репозиторий с активной разработкой из модулей подобного плана. У них есть и бойлерплейт-проект, все работает сразу, локально, но через VPN.
А Вам могу пожелать удачи в этом нелёгком труде
P.S. Создатель игры по моим подсчётам рубит с донатов хорошие деньги :)
Меня больше всего тогда поразило, как на картинке карты отмечается локация игрока. Это придавало экшна в текстовой игре!
Автору желаю успеха на этом непростом пути. Помимо технических навыков, там ещё много чему придётся учиться)
MMORPG для Telegram — Первый большой проект — Часть 0