Beispiel #1
0
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")
Beispiel #2
0
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))
Beispiel #3
0
    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}")
Beispiel #5
0
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)
Beispiel #6
0
    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)
Beispiel #8
0
async def process_text_message(message: types.Message):
    if message.is_command():
        await commandHandler.handle(message)
    else:
        await textHandler.handle(message)
Beispiel #9
0
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)
Beispiel #10
0
def is_command(message: types.Message, command: str):
    return message.is_command() and message.get_command().startswith(f'/{command}')