async def send_welcome(message: types.Message): if message.is_command() and message.text == '/help': await message.reply( "List of available commands:\n " "1. /help: Showing this message.\n" "2. /start: Starting bot query for your session.\n" "3. /weather <Your city or country>: Finding information about weather in " "your country or city.\n" "4. /top <film genre>: Will show top10 films of current genre." "\tAvailable chooses: \n" "Horrors, Fantastic, Shooters, Thrillers, Comedy's, Melodramas, Dramas" ) else: if db.get("{}".format(message.from_user.id)) is not None: await message.reply("You've already started bot!\n" "Your session will expire in: " "{} seconds.".format( db.ttl(message.from_user.id))) return db.setex(message.from_user.id, timedelta(days=10), value="active") log.info('User: {username} registered with ID: {id}'.format( username=message.from_user.username, id=message.from_user.id)) await message.reply("Hello! 😺 \n" "My name is Riven and that's my async bot!\n" "To see list of available commands type: /help")
async def top_films_with_genre(message: types.Message): """ Horrors: id1, Fantastic: id2, Shooters: id3, Thrillers: id4, Comedy's: id6, Melodramas: id7, Dramas: id8 :param message: :return: """ if message.is_command() and len(message.text) == 0: await message.reply( "There is no filter for films object. Sending top 20 random films!" ) return films = OrderedDict() films['horrors'] = '1' films['fantastic'] = '2' films['shooters'] = '3' films['thrillers'] = '4' films['comedy'] = '6' films['melodramas'] = '7' films['dramas'] = '8' async with aiohttp.ClientSession() as session: data = await pregMatch(message.text.lower(), films) url = "https://www.kinopoisk.ru/top/id_genre/{id}/".format(id=data) list_data = await films_data(url, session) print(list_data) await message.reply("Films by your request:\n\n" + ",\n".join(list_data))
async def on_post_process_message(self, message: types.Message, results, data: dict): analytic_id = data.get('analytic_id') if analytic_id is None: data['logger'].warning(f'{json.dumps(message.to_python())} analytic id was null') return if (message.is_command()): await log_command(message.from_user.id, analytic_id) else: if (message.from_user): await log_text(message.from_user.id, analytic_id) else: data['logger'].warning(f'{json.dumps(message.to_python())} user id null') await log_text(message.chat.id, 'no user id provided')
async def bot_start(message: types.Message, state: FSMContext): user = await db.get_user(message.from_user.id) if not user: bot_username = (await dp.bot.me).username if str(message.from_user.id) in ADMINS: admin = await db.verify_admin(message.from_user.id, message.from_user.full_name) await message.answer( f'Здравствуйте, новый Администратор {message.from_user.get_mention()}\n' f'Что бы открыть админ меню, пропишите /admin\n' f'Ваш реферальный код <pre>{admin.code}</pre>\n' f'Или ссылка t.me/{bot_username}?start={admin.code}') return code = message.text if not message.is_command() else message.get_args() if not code: await message.answer( 'Чтобы использовать этого бота введите код приглашения, ' 'либо пройдите по реферальной ссылке') await state.set_state('wait_code') return referrer = await db.get_user_on_code(message.get_args()) if referrer: referral = await db.add_referral_user(referrer, message.from_user.id, message.from_user.full_name) await message.answer( f'Вы были приглашены пользователем <b>{referrer.name}</b>\n' f'Вы можете получить бонус +10₽ если пригласите рефералов\n' f'Ваш реферальный код <pre>{referral.code}</pre>\n' f'Или ссылка t.me/{bot_username}?start={referral.code}', reply_markup=start_inline) return True else: await message.answer('Неверный код приглашения') return False await message.answer(f"Здравствуйте, {message.from_user.get_mention()}!\n" f"Ваш баланс: {user.balance}")
async def process_to_enter_login(message: types.Message, state: FSMContext) -> None: """Reacts on every text entered with the state Form.to_enter_login""" user_id: int = message.from_user.id text: str = message.text current_state: typing.Optional[str] = await state.get_state() logging.info( "User ID %d provided login: '******'. State: %s", user_id, text, current_state ) if message.is_command(): await onboarding.process_cancel( user_id, state, "Что-то пошло не так? Давайте попробуем начать сначала. Введите /start", ) return await onboarding.process_to_enter_login(user_id, text, state)
async def check(self, message: Message): if not message.is_command(): return False command = message.text.split()[0][1:] command, _, mention = command.partition('@') if mention and mention != (await message.bot.me).username: return False resp = {'command_args': None, 'command_args_error': None} parts = re.split(r'\s+', message.text) try: args = self.parser.parse_args(parts[1:]) resp['command_args'] = args return resp except ValueError as e: resp['command_args_error'] = str(e) return resp except (Exception, SystemExit): return False
async def on_process_message(self, message: types.Message, data: dict): state = data.get("state") if not message.is_command() and await state.get_state() in quiz: await self.check(message, state)
async def process_text_message(message: types.Message): if message.is_command(): await commandHandler.handle(message) else: await textHandler.handle(message)
async def process_text_message(message: types.Message): if message.is_command(): bot_username = (await bot.get_me()).username await commandHandler.handle(bot_username, message) else: await textHandler.handle(message)
def is_command(message: types.Message, command: str): return message.is_command() and message.get_command().startswith(f'/{command}')