-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
131 lines (98 loc) · 5.15 KB
/
main.py
File metadata and controls
131 lines (98 loc) · 5.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
from aiogram import Bot, Dispatcher, types
from aiogram import F
from aiogram.types import FSInputFile
from aiogram.filters import CommandStart, Command
from aiogram.client.bot import DefaultBotProperties
from aiogram.enums import ParseMode
from parsing import main
from img_path import get_img
from misc import config
# todo: Создание бота
bot = Bot(config.TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
dp = Dispatcher()
# todo: Создание клавиатур
def get_keyboard_start():
buttons = [
[types.InlineKeyboardButton(text='Получить статистику игрока', callback_data='season')],
[types.InlineKeyboardButton(text='Какой ты сегодня агент', callback_data='mood')]
]
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
return keyboard
def get_keyboard_stats():
buttons = [
[types.InlineKeyboardButton(text='Получить статистику другого игрока', callback_data='season')],
[types.InlineKeyboardButton(text='Какой ты сегодня агент', callback_data='mood')]
]
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
return keyboard
def get_keyboard_mood():
buttons = [
[types.InlineKeyboardButton(text='Получить статистику игрока', callback_data='season')],
[types.InlineKeyboardButton(text='Это не я, давай еще раз!!', callback_data='mood')]
]
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
return keyboard
def get_keyboard_season():
buttons = [
[types.InlineKeyboardButton(text='За все сезоны', callback_data='stats_all')],
[types.InlineKeyboardButton(text='Только за нынешний сезон', callback_data='stats')]
]
keyboard = types.InlineKeyboardMarkup(inline_keyboard=buttons)
return keyboard
# todo: Функции
def make_img_path():
img_info = get_img()
img_path = FSInputFile(r".\Mood\\" + img_info[0])
return img_path, img_info[1]
# todo: Хэндлеры
@dp.message(CommandStart())
async def handle_start(message: types.Message):
await message.answer(text='Привет, будущая киберкотлета😎.'
' Если ты хочешь узнать основную информацию о каком-либо игроке, то я тебе с этим помогу!',
reply_markup=get_keyboard_start())
@dp.message(Command('mood'))
async def handle_mood(message: types.Message):
await message.answer_photo(*make_img_path(), reply_markup=get_keyboard_mood())
@dp.message(Command('season'))
async def handle_season(message: types.Message):
await message.answer('Вам нужна статистика за все сезоны или только за нынешний?',
reply_markup=get_keyboard_season())
@dp.message()
async def get_stats_command(message: types.Message):
nickname = message.text
if nickname[0] == '!' and '#' in nickname:
try:
msg = ('Итак, вот какую информацию нам удалось собрать на этого игрока. '
'Но помни, что валорант - командная игра, и опираться только на статистику не стоит!!🤡\n\n')
for key, value in main(nickname[1:], ss).items():
msg += f'<b>{key}</b>: <em>{value}</em>\n\n'
await message.answer(text=msg, reply_markup=get_keyboard_stats())
except AttributeError:
await message.answer(text='Пользователь с таким ником не найден, проверьте написание!')
else:
await message.answer(text='Неверно введено имя пользователя, попробуй еще раз!')
# todo: Колбэки
@dp.callback_query(F.data == 'season')
async def callback_season(callback: types.CallbackQuery):
await callback.answer()
await callback.message.answer('Вам нужна статистика за все сезоны или только за нынешний?',
reply_markup=get_keyboard_season())
@dp.callback_query(F.data == 'stats')
async def callback_stats(callback: types.CallbackQuery):
global ss
ss = ''
await callback.answer()
await callback.message.answer(text='Введите ник игрока, начиная с ! например: !ValenOK#top')
@dp.callback_query(F.data == 'stats_all')
async def callback_stats_all(callback: types.CallbackQuery):
global ss
ss = '?season=all'
await callback.answer()
await callback.message.answer(text='Введите ник игрока, начиная с ! например: !ValenOK#top')
@dp.callback_query(F.data == 'mood')
async def callback_mood(callback: types.CallbackQuery):
await callback.answer()
await callback.message.answer_photo(*make_img_path(), reply_markup=get_keyboard_mood())
# todo: функция запуска бота
async def start_bot():
await dp.start_polling(bot)