Files
battle_royale_sim/bot.py
2025-07-26 21:58:38 +02:00

83 lines
3.2 KiB
Python

from telegram.ext import Application
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler
from telegram.ext import filters
from telegram import ReplyKeyboardMarkup
from telegram import ReplyKeyboardRemove
from utils import logs as _log
from entities import arena as _arena
from bot_libs import special_commands as _bot_special_cmd
from bot_libs import syms as _botsyms
from bot_libs import commands_handling as _bot_commands
async def bot_start(update, context):
await update.message.reply_text(_botsyms.START_MSG)
keyboard = [
['Init/Restart'],
['Add Player', 'Add random Players', 'Add random color Players'],
['Get Players', 'Get Alive Players', 'Get Death Players', 'Get Ranking Players',],
['Simulate Day', 'Run Periodically']
]
reply_markup= ReplyKeyboardMarkup(keyboard, one_time_keyboard=False, resize_keyboard=True)
chat_id = update.effective_chat.id
_log.log_debug(f'bot_start: {chat_id} - I\'m building the world\'s game...')
Arena= _arena.BrSimArena()
await update.message.reply_text('Ho creato il mondo di gioco', reply_markup=reply_markup)
context.application.bot_data['arena'] = Arena
async def bot_commands(update, context):
text= update.message.text
chat_id = update.effective_chat.id
_log.log_info(f'bot_command: {chat_id} - text received: {text}')
if text == 'Init/Restart':
return await bot_start(update, context)
if text == 'Add Player':
return await _bot_commands.bot_command_add_player(context, update, chat_id)
if text == 'Get Players':
return await _bot_commands.bot_command_get_players(context, update, chat_id)
if text == 'Get Alive Players':
return await _bot_commands.bot_command_get_alive_players(context, update, chat_id)
if text == 'Get Death Players':
return await _bot_commands.bot_command_get_death_players(context, update, chat_id)
if text == 'Get Ranking Players':
return await _bot_commands.bot_command_get_ranking_players(context, update, chat_id)
if text == 'Simulate Day':
return await _bot_commands.bot_command_simulate_day(context, update, chat_id)
if text == 'Run Periodically':
return await _bot_commands.bot_command_simulate_day_cron(context, update, chat_id)
waiting_for_name= context.application.bot_data.get('ask_name')
if waiting_for_name or text in ['Add random Players', 'Add random color Players']:
return await _bot_commands.get_name_from_input(context, update, chat_id, text)
waiting_for_seconds= context.application.bot_data.get('ask_seconds')
if waiting_for_seconds:
return await _bot_commands.get_seconds_from_input(context, update, chat_id, text)
if text == 'upstart': return await _bot_special_cmd.update_bot(update, context)
if text == 'logs': return await _bot_special_cmd.show_logs(update, context)
_log.log_debug(f'bot_command: {chat_id} - sent this text: {text}')
await update.message.reply_text(_botsyms.WIP_MSG)
def main():
application = Application.builder().token(_botsyms.TOKEN).build()
application.add_handler(CommandHandler('start', bot_start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, bot_commands))
_log.log_info('main: Bot is running...')
application.run_polling()
if __name__ == '__main__':
main()