示例#1
0
async def statisticsCallingCallbackHandler(callback_query: CallbackQuery,
                                           isUpdate: bool = False):
    message = callback_query.message

    buttonsData = [["Обновить", "update"], ["←Назад", "back"]]

    buttons = buttonsList(buttonsData, rowWidth=2)
    reply_markup = inline_keyboard.InlineKeyboardMarkup(
        row_width=2, inline_keyboard=buttons)

    userStats = getUserStats(userID=callback_query.from_user.id)

    text = markdown.bold("Ваша статистика:\n\n") + \
           "Создано демотиваторов — " + markdown.italic(f"{userStats['demoCreated']}\n") + \
           "Выполнено inline\-комманд — " + markdown.italic(f"{userStats['inlineAnswered']}\n")

    try:
        await bot.edit_message_text(text=text,
                                    reply_markup=reply_markup,
                                    parse_mode='MarkdownV2',
                                    chat_id=message.chat.id,
                                    message_id=message.message_id)

        if isUpdate:
            await callback_query.answer(text="Статистика обновлена")
    except exceptions.MessageNotModified:
        await callback_query.answer(text="Статистика не поменялась")
示例#2
0
 async def _get_seats_number(message: types.Message, state: FSMContext):
     logger.info('User %s has set seats: %s', message.from_user.username,
                 message.text)
     async with state.proxy() as data:
         seats = message.text.split(',')
         data['seats'] = seats
         logger.info('Current state: %s', data)
     markup = types.ReplyKeyboardMarkup(resize_keyboard=True,
                                        selective=True)
     markup.add("OK", "CANCEL")
     await TicketOrderState.next()
     msg = md.text(md.text('Всё правильно?'),
                   md.text(md.italic('Станция отправления: '),
                           md.code(data['from_station'])),
                   md.text(md.italic('Станция прибытия: '),
                           md.code(data['to_station'])),
                   md.text(md.italic('Дата отправления: '),
                           md.code(data['date'])),
                   md.text(md.italic('Номер вагона: '),
                           md.code(data['wagon_number'])),
                   md.text(md.italic('Бронируемые места: '),
                           md.code(','.join(data['seats']))),
                   sep='\n')
     await message.reply(msg,
                         reply_markup=markup,
                         parse_mode=types.ParseMode.MARKDOWN)
示例#3
0
async def process_iEvents(callback_query: types.CallbackQuery):
    message_text = text(
        bold('МЕРОПРИЯТИЯ 📌'), '\n\n1. Спортивное программирование',
        italic('\nКогда: каждую пятницу в 16:00',
               '\nГде: 13 кабинет'), '\n\n2. Открытие',
        italic('\nКогда: каждую пятницу в 17:30', '\nГде: 13 кабинет'),
        '\n\n3. Командный турнир ЦДЮТТ', italic('\nКогда: в конце апреля'))
    await bot.send_message(callback_query.from_user.id,
                           message_text,
                           parse_mode=ParseMode.MARKDOWN)
示例#4
0
async def process_age(message: types.Message, state: FSMContext):
    await Form.next()
    await state.update_data(age=int(message.text))

    await bot.send_message(message.chat.id,
                           md.italic("3⃣Из какого вы города?🏭"),
                           parse_mode=ParseMode.MARKDOWN)
示例#5
0
async def get_logs(message: types.Message):
    check_id(message.from_user)
    logger.info(f"{message.from_user.username} do getlog command")
    if message.from_user.id == ADMIN_ID:
        try:
            int(message.text[9:])
        except ValueError:
            await message.chat.do(types.ChatActions.UPLOAD_DOCUMENT)
            await message.reply_document(types.InputFile(f"logs/current.log"),
                                         caption="The logs file",
                                         reply_markup=key)
        else:
            await message.chat.do(types.ChatActions.TYPING)
            logs = (open(f"logs/current.log",
                         "r").readlines())[-int(message.text[9:]):]
            log = str()
            for i in logs:
                log += i
            msg = markdown.text(markdown.italic("logs:"),
                                markdown.code(log),
                                sep="\n")
            try:
                await message.reply(msg,
                                    parse_mode=ParseMode.MARKDOWN,
                                    reply_markup=key)
            except MessageIsTooLong:
                await message.reply(markdown.bold("Too much logs ! ❌"),
                                    reply_markup=key)
示例#6
0
async def get_enumerated_list(dicts_list: list, key: str, start_with=1):
    enumerated_list = list()
    for number, data_dict in enumerate(dicts_list, start_with):
        text = await update_image_sources(data_dict[key])
        enumerated_list.append(
            md.text(md.bold("/", number, sep=""), md.italic(text)))
    return enumerated_list
示例#7
0
async def updateNickname(message: Message, state: FSMContext) -> None:
    if len(message.text) <= 20:  # ограничение БД
        userID = message.from_user.id
        new_nickname = message.text

        change_nickname(userID, new_nickname)
        await message.answer(markdown.italic('Никнейм изменён на ') +
                             markdown.bold(f'{new_nickname}') + '.',
                             parse_mode='markdown')

        ###  ПАСХАЛ(ОЧКА)  ###

        if message.text.lower() == 'попа':
            await message.answer(
                "Ого! Ты знаешь об этой секретной функции? Тогда тебе от меня тоже сюрприз!"
            )
            await message.answer('https://t.me/addstickers/rnfoxbot')

        ###  ПАСХАЛ(ОЧКА)  ###

        # получение callback_query для изменения сообщения-настроек
        async with state.proxy() as data:
            callback_query = data['callback_query']
            message = callback_query.message

        await state.finish()
        await settingsCallingHandler(message, isBack=True, userID=userID)
    else:
        await message.answer("Можно покороче?")
 def __init__(self, product: Product, product_filters: ProductFilters, locale: str):
     self.product = product
     self.product_filters = product_filters
     self._pictures_links = [picture.pic for picture in self.product.pictures]
     self._product_link = md_link(self.product.name, self.product.url)
     self._new_text = italic(_("New")) if self.product.is_new else ""
     self._price_text = self.product.format_price(locale)
示例#9
0
async def check_language(message: types.Message):
    name = "test"
    text = markdown.text(markdown.bold("{name}".format(name=name)),
                         markdown.text(' 🔸', markdown.bold('Code:'),
                                       markdown.italic("RUS")),
                         sep='\n')
    await message.reply(text)
示例#10
0
文件: bot.py 项目: Daryna00/Bot
async def any_format(message: types.Message):
    msgtext = text(emojize("Я не знаю, что с этим делать :astonished:"),
                   italic('Я просто напомню, что есть'), code('команда'),
                   "/help")
    await bot.send_message(message.from_user.id,
                           msgtext,
                           parse_mode=ParseMode.MARKDOWN)
示例#11
0
async def cmd_start(message: types.Message):
    # Create a temporary session
    session = bot.create_temp_session()

    content = []

    # Make request (without proxy)
    async with session.get(GET_IP_URL) as response:
        content.append(
            text(':globe_showing_Americas:', bold('IP:'),
                 code(await response.text())))
        # This line is formatted to '🌎 *IP:* `YOUR IP`'

    # Make request through proxy
    async with session.get(GET_IP_URL,
                           proxy=bot.proxy,
                           proxy_auth=bot.proxy_auth) as response:
        content.append(
            text(':locked_with_key:', bold('IP:'), code(await response.text()),
                 italic('via proxy')))
        # This line is formatted to '🔐 *IP:* `YOUR IP` _via proxy_'

    # Send content
    await bot.send_message(message.chat.id,
                           emojize(text(*content, sep='\n')),
                           parse_mode=ParseMode.MARKDOWN)

    # Destroy temp session
    bot.destroy_temp_session(session)
示例#12
0
async def process_help_command(message: types.Message):
    r = requests.get('https://back.qliento.com/news/')
    data = json.loads(r.text)
    msg = data[0]
    picture = msg['image']
    msgg = text(bold(msg['name'])) + '\n' + text(italic(msg['description']))
    await message.reply(msgg, parse_mode=ParseMode.MARKDOWN)
    await bot.send_photo(message.chat.id, types.InputFile.from_url(picture))
示例#13
0
async def process_phone(message: types.Message, state: FSMContext):
    await Form.next()
    await state.update_data(phone=int(message.text))

    await bot.send_message(
        message.chat.id,
        md.italic("5⃣Напишите, чтобы вы хотели заказть из меню📘"),
        parse_mode=ParseMode.MARKDOWN)
示例#14
0
async def process_city(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['city'] = message.text

    await Form.next()
    await bot.send_message(message.chat.id,
                           md.italic("4⃣Введите свой номер телефона📱"),
                           parse_mode=ParseMode.MARKDOWN)
async def unknown_message(msg: types.Message):
    '''
    echo bot for not message
    '''
    message_text = md.text(
        emojize('I do not know what to do about it :astonished:'),
        md.italic('\nI will just remind,'), 'you that there',
        md.code('is a command'), '/help')
    await msg.reply(message_text, parse_mode=types.ParseMode.MARKDOWN)
示例#16
0
async def online_123(message: types.Message):
    text1 = message.from_user.get_mention() + ', ты лучше всех!!!'
    await message.answer(text1, parse_mode=ParseMode.MARKDOWN)
    text2 = bold('Я могу ответить на следующие команды:') + italic(' но отвечать на них я не буду')
    await message.answer(text2, parse_mode=ParseMode.MARKDOWN, disable_notification=True)
    # text3 = message.from_user.id
    # me = await dp.bot.get_chat_member(chat_id=COD_CHAT_ID, user_id=ADMIN_ID)
    text5 = await message.chat.get_member(user_id=ADMIN_ID)
    print(text5['user'])
示例#17
0
async def eval_cmd(message: types.Message):
    check_id(message.from_user)
    logger.info(f"{message.from_user.username} do eval command")
    if message.from_user.id == ADMIN_ID:
        msg = markdown.text(markdown.italic("eval:"),
                            markdown.code(eval(message.text[6:])),
                            sep="\n")
        await message.reply(msg,
                            parse_mode=ParseMode.MARKDOWN,
                            reply_markup=key)
示例#18
0
async def send_right_answers(message: Message, question: dict):
    response = requests.get("{}/questions/{}/answers".format(
        config.host, question["id"]),
                            params={"where:status": "R"})

    if response.status_code != 200:
        await message.reply(md.bold(
            emojize(
                "К сожалению я пока не знаю ответа на этот вопрос :confused:")
        ),
                            reply=False,
                            parse_mode=ParseMode.MARKDOWN)
    else:
        media_group_content, right_answers_text, ps_message = list(), list(
        ), ""
        title_text, title_photos = (await update_image_sources(
            question["title"], False)).values()
        media_group_content.extend(title_photos)

        answers = response.json()["data"][0]["variants"]
        for answer in answers:
            answer_text, answer_photos = (await update_image_sources(
                answer[-1], False, len(media_group_content))).values()
            right_answers_text.append(
                md.bold(emojize(":white_check_mark:"), answer_text))
            media_group_content.extend(answer_photos)
        if media_group_content:
            ps_message = md.text(
                "\n",
                md.bold("P.S."),
                " Текст может не отображать полной информации из картинок,",
                " поэтому ниже я отправил изображения из теста.",
                sep="")

        await message.reply(md.text(md.text(
            emojize(":nerd_face: Я нашел ответ на вопрос:")),
                                    md.italic(title_text),
                                    *right_answers_text,
                                    ps_message,
                                    sep="\n"),
                            reply=False,
                            parse_mode=ParseMode.MARKDOWN,
                            disable_web_page_preview=True)
        if media_group_content:
            media_group = MediaGroup()
            photos_map = map(lambda mgc: mgc[1], media_group_content)
            names_map = map(lambda mgc: mgc[0], media_group_content)
            media_group.attach_many(*photos_map)
            media_group_messages = await message.reply_media_group(media_group,
                                                                   reply=False)
            for photo_name, photo_message in zip(names_map,
                                                 media_group_messages):
                if (await file_id_storage.get_file_id(photo_name)) is None:
                    await file_id_storage.set_file_id(
                        photo_name, photo_message.photo[-1].file_id)
示例#19
0
async def unknown_message(msg: types.Message):
    message_text = text(emojize('Я не знаю, что с этим делать :astonished:'),
                        italic('\nЯ просто напомню,'), 'что есть',
                        code('команда'), '/help')

    if msg.content_type == "text":
        with open("source/history.txt", 'a') as f:
            f.write(
                str(msg.date) + " [" + str(msg.chat.id) + "] " +
                msg.chat.first_name + ": " + msg.text + "\n")

    await msg.reply(message_text, parse_mode=ParseMode.MARKDOWN)
示例#20
0
async def process_contact(message: types.Message):
    keyboards = InlineKeyboardMarkup(row_width=2, one_time_keyboard=True)
    btn1 = InlineKeyboardButton(text='Вконтакте', url='https://vk.com/')
    btn2 = InlineKeyboardButton(text='Инстаграм',
                                url='https://www.instagram.com/')
    keyboards.add(btn1, btn2)
    await bot.send_message(message.chat.id,
                           md.italic(
                               'Как с нами связаться📲\n'
                               'Наш телефон: +7911888888📞\n'
                               'Наш адресс: ул.Достоевског, д.15, оф.48🏢'),
                           reply_markup=keyboards,
                           parse_mode=ParseMode.MARKDOWN)
示例#21
0
async def get_db(message: types.Message):
    check_id(message.from_user)
    logger.info(f"{message.from_user.username} do getdb command")
    if message.from_user.id == ADMIN_ID:
        with Session as session:
            users = dict()
            for u in session.query(User).all():
                users[u] = u.__dict__
            msg = markdown.text(markdown.italic("db:"),
                                markdown.code(users),
                                sep="\n")
        await message.reply(msg,
                            parse_mode=ParseMode.MARKDOWN,
                            reply_markup=key)
示例#22
0
async def process_name(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['name'] = message.text

    await Form.next()
    greet_kb = ReplyKeyboardMarkup(resize_keyboard=True,
                                   one_time_keyboard=True)
    button_cancel = ('/Отменить❌')
    greet_kb.add(button_cancel)
    await bot.send_message(message.chat.id,
                           md.italic(
                               f"2⃣Отлично, {message.from_user.first_name}\n"
                               "Сколько тебе лет?🔞"),
                           reply_markup=greet_kb,
                           parse_mode=ParseMode.MARKDOWN)
示例#23
0
async def OrInlineQueryHandler(inline_query: InlineQuery):
    answer = orDecider(inline_query.query).capitalize()
    messToUser = markdown.bold(
        inline_query.query) + '\n' + markdown.italic(answer)

    items = [
        InlineQueryResultArticle(id=str(time()),
                                 title='Лис выбрал слово...',
                                 description=inline_query.query,
                                 thumb_url=foxLogoPreview,
                                 input_message_content=InputTextMessageContent(
                                     messToUser, parse_mode='MarkdownV2'))
    ]

    await bot.answer_inline_query(inline_query.id, results=items, cache_time=0)
示例#24
0
async def cmd_start(message: types.Message):
    await Form.name.set()
    greet_kb = ReplyKeyboardMarkup(resize_keyboard=True,
                                   one_time_keyboard=True)
    button_cancel = ('/Отменить❌')
    greet_kb.add(button_cancel)
    await bot.send_message(
        message.chat.id,
        md.italic(
            "Если вы ознакомились с нашим меню, то для заполнения заявки нужно указать свои данные📝\n"
            "Чтобы мы могли с вами связаться, вводите пожалуйста точную информаци, спасибо😊\n"
            "Если вы ввели не те данные, нажмите Отменить❌\n"
            "1⃣Введите свои инициалы(ФИО)"),
        reply_markup=greet_kb,
        parse_mode=ParseMode.MARKDOWN)
示例#25
0
async def process_iOlimp(callback_query: types.CallbackQuery):
    message_text = text(
        '❗Участие в олимпиадах даёт право поступления в ВУЗ без вступительных испытаний или школьник получает 100 баллов по профильному предмету олимпиады.',
        bold('\n\nПОЛЕЗНЫЕ РЕСУРСЫ ДЛЯ ПОДГОТОВКИ К ОЛИМПИАДАМ 💡'),
        '\nolimpiada.ru - всё об олимпиадах для школьников'
        '\npostypashki.ru - подготовка к олимпиадам, ЕГЭ и ДВИ'
        '\nfoxford.ru - онлайн-школа'
        '\nshkolkovo.net - образовательный портал для подготовки к ЕГЭ, ОГЭ, и олимпиадам'
        '\nmathus.ru - материалы по математике: подготовка к олимпиадам и ЕГЭ',
        bold('\n\nБЛИЖАЙШИЕ ОЛИМПИАДЫ:'),
        '\n1. Командный турнир ЦДЮТТ (по 3 человека)',
        italic('\nКогда: в конце апреля'))
    await bot.send_message(callback_query.from_user.id,
                           message_text,
                           parse_mode=ParseMode.MARKDOWN,
                           reply_markup=kb.intexBack)
示例#26
0
async def process_strength(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['strength'] = message.text

    await Form.next()
    greet_kb = ReplyKeyboardMarkup(resize_keyboard=True,
                                   row_width=1,
                                   one_time_keyboard=True)
    button_cancel = ('/Отменить❌')
    button_not = ('Нет')
    greet_kb.add(button_cancel, button_not)
    await bot.send_message(
        message.chat.id,
        md.text(md.italic("7⃣Вы хотели бы забронировать стол?⌚\n"),
                "Если да то напишите дату, например 14.06.20 в 14:00"),
        reply_markup=greet_kb,
        parse_mode=ParseMode.MARKDOWN)
示例#27
0
async def cmd_start(message: types.Message):
    content = []

    # Make request (without proxy)
    ip = await fetch(GET_IP_URL)
    content.append(text(':globe_showing_Americas:', bold('IP:'), code(ip)))
    # This line is formatted to '🌎 *IP:* `YOUR IP`'

    # Make request through proxy
    ip = await fetch(GET_IP_URL, bot.proxy, bot.proxy_auth)
    content.append(
        text(':locked_with_key:', bold('IP:'), code(ip), italic('via proxy')))
    # This line is formatted to '🔐 *IP:* `YOUR IP` _via proxy_'

    # Send content
    await bot.send_message(message.chat.id,
                           emojize(text(*content, sep='\n')),
                           parse_mode=ParseMode.MARKDOWN)
示例#28
0
async def cmd_start(message: types.Message):
    # fetching urls will take some time, so notify user that everything is OK
    await types.ChatActions.typing()

    content = []

    # Make request (without proxy)
    async with aiohttp.ClientSession() as session:
        ip = await fetch(GET_IP_URL, session)
    content.append(text(':globe_showing_Americas:', bold('IP:'), code(ip)))
    # This line is formatted to '🌎 *IP:* `YOUR IP`'

    # Make request through bot's proxy
    ip = await fetch(GET_IP_URL, bot.session)
    content.append(text(':locked_with_key:', bold('IP:'), code(ip), italic('via proxy')))
    # This line is formatted to '🔐 *IP:* `YOUR IP` _via proxy_'

    # Send content
    await bot.send_message(message.chat.id, emojize(text(*content, sep='\n')), parse_mode=ParseMode.MARKDOWN)
示例#29
0
async def qrInlineHandler(inline_query: InlineQuery):
    awaitingButton = inline_keyboard.InlineKeyboardButton(
        'Ожидайте...', callback_data='awaiting')

    awaitingKeyboard = inline_keyboard.InlineKeyboardMarkup(
        row_width=1).insert(awaitingButton)
    items = [
        InlineQueryResultPhoto(
            id=str(time() + 1),
            photo_url="https://i.ibb.co/n16zcs0/rnfoxbot-QR.jpg",
            thumb_url='https://i.ibb.co/KsbFqjG/rnfoxbot-QR.jpg',
            photo_width=200,
            photo_height=200,
            caption=markdown.italic("QR—code генерируется..."),
            reply_markup=awaitingKeyboard,
            parse_mode='MarkdownV2')
    ]

    await bot.answer_inline_query(inline_query.id, results=items, cache_time=0)
示例#30
0
async def randNumInlineQueryHandler(inline_query: InlineQuery):
    num = [
        int(i) for i in inline_query.query.lower().replace("num", "").split()
    ]

    randomNumber = str(randint(num[0], num[1]))
    messToUser = markdown.italic(f"Случайное число от {num[0]} до {num[1]}:") + '\n' + \
                 markdown.bold(f'{randomNumber}')
    items = [
        InlineQueryResultArticle(
            id=str(time()),
            title=f'Случайное число от {num[0]} до {num[1]}:',
            thumb_url=foxLogoPreview,
            description=f"{num[0]}, {num[1]}\n"
            f"Что же он выберет?",
            input_message_content=InputTextMessageContent(
                messToUser, parse_mode='MarkdownV2'))
    ]

    await bot.answer_inline_query(inline_query.id, results=items, cache_time=0)