import os
import logging
import requests
from queue import Queue
from telegram import Update
from telegram.ext import ExtBot, CommandHandler, CallbackContext
# Настраиваем журнал
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
BOT_TOKEN = os.getenv('BOT_TOKEN')
EPIC_API_KEY = os.getenv('EPIC_API_KEY')
def get_fortnite_stats(username):
url = f'https://api.fortniteapi.io/stats?username={username}&platform=pc'
headers = {
'Authorization': f'{EPIC_API_KEY}'
}
try:
response = requests.get(url, headers=headers)
data = response.json()
except requests.exceptions.RequestException as e:
logging.error(f'Ошибка при отправке запроса к API Fortnite: {e}')
return None
if 'data' not in data:
logging.error('Не удалось получить статистику игрока.')
return None
return data
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text('Привет! Введите ваш ник в Fortnite')
def get_fortnite_stats_command(update: Update, context: CallbackContext) -> None:
username = context.args[0]
stats = get_fortnite_stats(username)
if stats is None:
update.message.reply_text('Игрок с данным ником не найден')
else:
player_stats = stats['data']['stats']
wins = player_stats['placetop1']
kills = player_stats['kills']
level = player_stats['level']
update.message.reply_text(f'Статистика игрока {username} в Fortnite:\n'
f'Побед: {wins}\n'
f'Убийств: {kills}\n'
f'Уровень: {level}')
def main() -> None:
# Создаем очередь сообщений
update_queue = Queue()
# Создаем бота
bot = ExtBot(BOT_TOKEN, update_queue=update_queue)
# Добавляем обработчики к атрибуту dispatcher бота
bot.dispatcher.add_handler(CommandHandler('start', start))
bot.dispatcher.add_handler(CommandHandler('stats', get_fortnite_stats_command))
# Запускаем опрос бота с аргументом drop_pending_updates=True
bot.start_polling(drop_pending_updates=True)
# Добавляем бесконечный цикл, который предотвращает выход программы при нажатии Ctrl+C
while True:
bot.idle()
if __name__ == '__main__':
main()