コード例 #1
0
def ShowCart(bot, update, self):
    try:
        if self.cart_message:
            try:
                bot.delete_message(chat_id=self.cart_message.chat_id,
                                   message_id=self.cart_message.message_id)
            except:
                doNothing = 0
        if not self.cart:
            bot.send_message(chat_id=update.message.chat_id,
                             text='Корзина пуста.',
                             parse_mode=ParseMode.HTML)
        else:
            buttons = []
            total = 0
            for g in self.cart:
                buttons.append([
                    InlineKeyboardButton(
                        g, callback_data='cartremove-{}'.format(g))
                ])
                total = total + float(g.split(' ')[2])

            buttons.append(
                [InlineKeyboardButton('Оплатить', callback_data='pay')])
            self.cart_message = bot.send_message(
                chat_id=update.message.chat_id,
                text='Сумма: {} UAH'.format(total),
                parse_mode=ParseMode.HTML,
                reply_markup=InlineKeyboardMarkup(buttons))
    except Exception as e:
        print(e)
コード例 #2
0
ファイル: main.py プロジェクト: nicofirst1/photoVoterBot
def photo_reciever(bot, update):

    photo_dict = get_votes()

    file_id = update.message.photo[0].file_id

    if not isinstance(photo_dict, list): photo_dict = [photo_dict]

    if file_id in [elem["file_id"] for elem in photo_dict]:
        update.message.reply_text("Questa foto è gia stata caricata")
        return

    print(f"Recieved photo with {file_id} id")

    inline = InlineKeyboardMarkup([
        [
            InlineKeyboardButton("👍", callback_data="/vote y " + file_id),
            InlineKeyboardButton("👎", callback_data="/vote n " + file_id)
        ],
    ])

    insert_fileid(file_id, [], [])

    bot.sendPhoto(photo=file_id, chat_id=channel_id, reply_markup=inline)

    update.message.reply_text(
        "Vota la foto che hai mandato sul canale https://t.me/fancaPhoto")
コード例 #3
0
def get_saved(bot, update):
    """ Gets a word from the user's list of words to learn. """
    global store_helper
    user_id = update.effective_user.id
    word = store_helper.get_word(user_id)
    if word is not None:
        button_list = [
            InlineKeyboardButton(text="Explain",
                                 callback_data=json.dumps(
                                     create_callback_word_dict(
                                         CALLBACK_TYPE_EXPLAIN, word))),
            InlineKeyboardButton(text="Translate",
                                 callback_data=json.dumps(
                                     create_callback_word_dict(
                                         CALLBACK_TYPE_TRANSLATE, word))),
            InlineKeyboardButton(text="Remove",
                                 callback_data=json.dumps(
                                     create_callback_word_dict(
                                         CALLBACK_TYPE_REMOVE, word)))
        ]

        reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=3))

        bot.sendMessage(chat_id=get_chat_id(update),
                        text=word,
                        reply_markup=reply_markup)
    else:
        error(bot, update, "No saved words found.")
コード例 #4
0
        def awrapper(update: Update, context: CallbackContext, *args,
                     **kwargs):
            nonlocal permission
            if update.effective_chat.type == 'private':
                return func(update, context, *args, **kwargs)
            message = update.effective_message
            is_anon = bool(update.effective_message.sender_chat)

            if is_anon:
                callback_id = f'anoncb/{message.chat.id}/{message.message_id}/{permission.value}'
                anon_callbacks[(message.chat.id,
                                message.message_id)] = ((update, context),
                                                        func)
                anon_callback_messages[(
                    message.chat.id, message.message_id
                )] = (message.reply_text(
                    "Seems like you're anonymous, click the button below to prove your identity",
                    reply_markup=InlineKeyboardMarkup([[
                        InlineKeyboardButton(text='Prove identity',
                                             callback_data=callback_id)
                    ]]))).message_id
                # send message with callback f'anoncb{callback_id}'
            else:
                user_id = message.from_user.id
                chat_id = message.chat.id
                mem = context.bot.get_chat_member(chat_id=chat_id,
                                                  user_id=user_id)
                if getattr(
                        mem, permission.value
                ) is True or mem.status == "creator" or user_id in SUDO_USERS:
                    return func(update, context, *args, **kwargs)
                else:
                    return message.reply_text(
                        f"You lack the permission: `{permission.name}`",
                        parse_mode=ParseMode.MARKDOWN)
コード例 #5
0
def aboutUs(update, context):
    """
    Read more about Algorand and how you can build on Algorand
    :param update:
    :param context:
    :return: None
    """
    keyboard = [[
        InlineKeyboardButton("Website",
                             'https://algorand.com',
                             callback_data='1'),
        InlineKeyboardButton("Developer'site",
                             'https://developer.algorand.org',
                             callback_data='2')
    ],
                [
                    InlineKeyboardButton("Community",
                                         'https://community.algorand.com',
                                         callback_data='3')
                ]]

    reply_markup = InlineKeyboardMarkup(keyboard)

    update.message.reply_text('Learn more about Algorand:',
                              reply_markup=reply_markup)
コード例 #6
0
 def get_markup(self):
     likes = ArticleMark.objects.filter(article=self, mark=1).count()
     dislikes = ArticleMark.objects.filter(article=self, mark=-1).count()
     return InlineKeyboardMarkup([[
         InlineKeyboardButton(text=f'👍{likes}',    callback_data=f'{self.get_callback_data()} like'),
         InlineKeyboardButton(text=f'👎{dislikes}', callback_data=f'{self.get_callback_data()} dislike'),
     ]])
コード例 #7
0
def check_scrape_job(scrape_id: str, scraper: Scraper):
    from karim import telegram_bot as bot
    failed = FailedJobRegistry(queue=queue)

    if scrape_id in failed.get_job_ids():
        # job failed
        bot.send_message(scraper.get_user_id(), failed_scraping_ig_text)
        sheet.log(datetime.utcnow(),
                  scraper.get_user_id(),
                  action='FAILED SCRAPE')
        return False
    else:
        redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
        conn = redis.from_url(redis_url)
        job = Job.fetch(scrape_id, connection=conn)
        result = job.result

        # Save result in sheets
        sheet.add_scrape(scraper.get_target(),
                         name=scraper.get_name(),
                         scraped=result)
        sheet.log(datetime.utcnow(),
                  scraper.get_user_id(),
                  action='SUCCESSFUL SCRAPE')
        # Update user
        markup = InlineKeyboardMarkup([[
            InlineKeyboardButton(text='Google Sheets',
                                 url=sheet.get_sheet_url(1))
        ]])
        bot.send_message(scraper.get_user_id(),
                         finished_scrape_text,
                         reply_markup=markup)
        return True
コード例 #8
0
def selecting_buro(update, context):
    buttons = []
    deps = termin.Buro.__subclasses__()
    for dep in deps:
        buttons.append(
            InlineKeyboardButton(text=dep.get_name(),
                                 callback_data=dep.__name__))
    custom_keyboard = [buttons]

    if 'buro' in context.user_data and 'termin_type' in context.user_data:
        custom_keyboard.append([
            InlineKeyboardButton(text='Reuse last selection',
                                 callback_data='_REUSE')
        ])

    if update.message:
        msg = update.message
    else:
        msg = update.callback_query.message

    msg.reply_text('Hi! Here are available departments. Please select one:',
                   reply_markup=InlineKeyboardMarkup(custom_keyboard,
                                                     one_time_keyboard=True))

    return SELECTING_TERMIN_TYPE
コード例 #9
0
ファイル: generateAccount.py プロジェクト: bobeu/testalgotel
def create_account(update, context):
    """
    Create new public/private key pair
    Returns the result of generating an account to user:
    :param update:
    :param context:
    :return: 1). An Algorand address, 2). A mnemonic seed phrase
    """
    update.message.reply_text("Hang on while I get you an account ...")
    time.sleep(1)
    try:
        sk, pk = account.generate_account()
        mn = mnemonic.from_private_key(sk)
        if not (pk and sk is None):
            update.message.reply_text("Account creation success.\nAddress:  {}\n\n"
                                      "Private Key:  {}\n\n"
                                      "Mnemonic:\n {}\n\n"
                                      "I do not hold or manage your keys."
                                      "".format(pk, sk, mn)
                                      )
            context.user_data['default_pk'] = pk
        update.message.reply_text('To test if your address works fine, copy your address, and visit:\n ')
        keyboard = [[InlineKeyboardButton(
            "DISPENSER", 'https://bank.testnet.algorand.network/', callback_data='1')]]

        dispenser = InlineKeyboardMarkup(keyboard)

        update.message.reply_text('the dispenser to get some Algos\nSession ended.'
                                  'Click /start to begin.', reply_markup=dispenser)
    except Exception as e:
        update.message.reply_text('Account creation error.')
        return e
コード例 #10
0
def select_termin_type(update, context):
    if update.callback_query and update.callback_query.data == '_REUSE':
        # All data already stored in user_data and user asked to repeat
        return quering_termins(update, context, True)
    elif not update.callback_query:
        # We returned from previous step, but buro is already known
        department = context.user_data['buro']
        msg = update.message
    else:
        msg = update.callback_query.message
        try:
            department = getattr(termin, update.callback_query.data)
        except AttributeError:
            return SELECTING_TERMIN_TYPE
        context.user_data['buro'] = department

    buttons = []

    for i, x in department.get_typical_appointments():
        buttons.append([InlineKeyboardButton(text=x, callback_data=i)])
    if department.get_typical_appointments():
        buttons.append(
            [InlineKeyboardButton(text='--------------', callback_data='-1')])

    for i, x in enumerate(department.get_available_appointment_types()):
        buttons.append([InlineKeyboardButton(text=x, callback_data=i)])

    msg.reply_text(
        'There are several appointment types available. Most used types are on top. Please select one',
        reply_markup=InlineKeyboardMarkup(buttons, one_time_keyboard=True))

    return QUERING_TERMINS
コード例 #11
0
def start_over(update: Update, context: CallbackContext) -> int:
    query = update.callback_query
    query.answer()
    Logger.getInstance().info("L'utente " + context.user_data["username"] +
                              " ha ricominciato la conversazione.")
    keyboard = [[
        InlineKeyboardButton(
            "LINK", url="http://web.dmi.unict.it/corsi/l-31/programmi"),
        InlineKeyboardButton("Iniziamo!", callback_data=str(0))
    ]]
    reply_markup = InlineKeyboardMarkup(keyboard)
    context.user_data["index_list_subject_length"] = 4
    context.user_data["ratings"] = []
    context.user_data["subject_names"] = []
    Subjects.getInstance().init_array(context.user_data["ratings"],
                                      context.user_data["subject_names"])
    query.edit_message_text(
        text=
        "Prima di iniziare è necessario che tu legga i programmi delle varie materie del 3° anno.\n"
        +
        "Questo è un passo fondamentale perché dopo ti verrà chiesto di valutarne alcuni!\n"
        +
        "Puoi cliccare nel bottone sottostante per raggiungere la pagina dei programmi.\n"
        +
        "Dopo aver letto tutto attentamente clicca su \"Iniziamo!\", ricorda che il range dei voti va da 1 (pessimo) a 5 (fantastico).",
        reply_markup=reply_markup)
    return 0
コード例 #12
0
def estrato(update, context):
    query = update.callback_query
    query.edit_message_text(text="You selected {} garages.".format(query.data))
    context.user_data['garages'] = query.data
    lang_1 = InlineKeyboardButton(text="One \U00000031\U000020E3",
                                  callback_data='One')
    lang_2 = InlineKeyboardButton(text="Two \U00000032\U000020E3",
                                  callback_data="Two")
    lang_3 = InlineKeyboardButton(text="Three \U00000033\U000020E3",
                                  callback_data="Three")
    lang_4 = InlineKeyboardButton(text="Four \U00000034\U000020E3",
                                  callback_data="Four")
    lang_5 = InlineKeyboardButton(text="Five \U00000033\U000020E3",
                                  callback_data="Five")
    lang_6 = InlineKeyboardButton(text="Six \U00000034\U000020E3",
                                  callback_data="Six")

    lang_keyboard = InlineKeyboardMarkup([[lang_1, lang_2], [lang_3, lang_4],
                                          [lang_5, lang_6]])

    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='Which stratum do you prefer?',
                             reply_markup=lang_keyboard)

    return SIXTH
コード例 #13
0
def tipo(update, context):
    query = update.callback_query
    query.edit_message_text(
        text="You selected the stratum {}.".format(query.data))
    context.user_data['estrato'] = query.data
    names = df['tipo_inmueble'].unique()
    lan = []
    lan_group = []
    count = 0

    for i in names:
        lan.append(InlineKeyboardButton(text=i, callback_data=i))
        count = count + 1
        if count == 2:
            lan_group.append(lan)
            lan = []
            count = 0

    lang_keyboard = InlineKeyboardMarkup(lan_group)

    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='What type of property do you prefer?',
                             reply_markup=lang_keyboard)

    return SEVEN
コード例 #14
0
def stratum(update, context):
    query = update.callback_query
    query.edit_message_text(
        text="You selected the locality: {}".format(query.data))
    context.user_data['localidad'] = query.data

    names = df[df['LocNombre'] == '{}'.format(
        query.data)]['sector_catastral'].unique()

    lan = []
    lan_group = []
    count = 0

    for i in names:
        lan.append(InlineKeyboardButton(text=i, callback_data=i))
        count = count + 1
        if count == 2:
            lan_group.append(lan)
            lan = []
            count = 0

    lang_keyboard = InlineKeyboardMarkup(lan_group)

    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='What sector do you want your new house?',
                             reply_markup=lang_keyboard)

    return SECOND
コード例 #15
0
ファイル: bot.py プロジェクト: ericmiranda7/cowin-bot
def get_state(update: Update, _: CallbackContext) -> int:
  temp_user = {}
  temp_user['_id'] = update.callback_query.from_user.id
  query = update.callback_query
  state_id = update.callback_query.data[1:]
  temp_user['state'] = int(state_id)
  coll_users.update_one({'_id': temp_user['_id']}, {'$set': {'state': int(state_id)}}, upsert=True)
  state = coll_states.find_one({'_id': int(state_id)})
  keyboard = []
  keyboard_row = []
  districts_list = state['districts']
  for indx, district in enumerate(districts_list):
    district_id = district['district_id']
    keyboard_row.append(
      InlineKeyboardButton(district['district_name'], callback_data=f'd{district_id}')
    )
    if indx == 0:
      continue
    if (indx+1) % 2 == 0:
      keyboard.append(copy.deepcopy(keyboard_row))
      keyboard_row.clear()
  
  reply_markup = InlineKeyboardMarkup(keyboard)
  query.answer()
  query.edit_message_text('Please choose a district:', reply_markup=reply_markup)
コード例 #16
0
ファイル: bot.py プロジェクト: ericmiranda7/cowin-bot
def setup(update: Update, _: CallbackContext) -> None:
  temp_user = {}
  temp_user['_id'] = update.message.chat.id
  coll_users.update_one({'_id': temp_user['_id']}, {'$set': {'_id': temp_user['_id']}}, upsert=True)
  states_list = coll_states.find({})

  # show states inline
  keyboard = []
  keyboard_row = []
  for indx, state in enumerate(states_list):
    state_id = state['_id']
    keyboard_row.append(
      InlineKeyboardButton(state['state_name'], callback_data=f's{state_id}')
    )
    if indx == 0:
      continue
    if (indx+1) % 3 == 0:
      keyboard.append(copy.deepcopy(keyboard_row))
      keyboard_row.clear()
    if indx == 36:
      keyboard.append(copy.deepcopy(keyboard_row))
      keyboard_row.clear()

  reply_markup = InlineKeyboardMarkup(keyboard)
  update.message.reply_text(text='Please choose a state:', reply_markup=reply_markup)
コード例 #17
0
    def command_deleteop(self, bot: Bot, update: Update, groups, user_data):
        opportunity_id = groups[0]

        opportunity = Opportunity.find(opportunity_id)

        if not opportunity:
            update.message.reply_text("Es gibt keine Reise mit dieser ID.")
            return self.END

        user_data["delete_opportunity_id"] = opportunity_id

        text = "Bist du dir sicher, dass du deine Reise am %s nach <strong>%s</strong> absagen möchtest?" % (
            opportunity.date_readable(),
            opportunity.city
        )

        reply = update.message.reply_text(text,
                                          parse_mode=ParseMode.HTML,
                                          reply_markup=InlineKeyboardMarkup(
                                              [[InlineKeyboardButton("Ja, sage die Reise ab",
                                                                     callback_data="deleteop_confirm")],
                                               [InlineKeyboardButton("Nein", callback_data="deleteop_cancel")]])
                                          )

        user_data["message_id"] = reply.message_id

        return self.CONFIRM_DELETION
コード例 #18
0
def comment_cmd(bot, update, args):
    user_id = update.message.from_user.id
    chat_id = update.message.chat_id
    first_name = update.message.from_user.first_name
    last_name = update.message.from_user.last_name
    username = update.message.from_user.username
    db = DBwrapper.get_instance()
    lang_id = db.get_lang_id(user_id)

    state_handler = StateHandler.get_instance()
    user = state_handler.get_user(user_id)

    if user.get_state() == UserState.IDLE:
        if len(args) > 1:
            text = " ".join(args)
            logger.debug("New comment! {}!".format(user_id))

            bot.sendMessage(chat_id=chat_id, text=translate("userComment", lang_id))
            for admin_id in db.get_admins():
                bot.sendMessage(admin_id,
                                "New comment:\n\n{}\n\n{} | {} | {} | @{} | {}".format(text, user_id, first_name,
                                                                                       last_name, username,
                                                                                       lang_id))
            user.set_state(UserState.IDLE)
        else:
            # The user just wrote "/comment" -> Ask him to send a message
            logger.debug("Add {} to comment_list!".format(user_id))

            keyboard = [[InlineKeyboardButton(text=translate("cancel", lang_id), callback_data="cancel_comment")]]
            reply_markup = InlineKeyboardMarkup(keyboard)

            bot.sendMessage(chat_id=chat_id, text=translate("sendCommentNow", lang_id), reply_markup=reply_markup)
            user.set_state(UserState.COMMENTING)
コード例 #19
0
ファイル: bot.py プロジェクト: ericmiranda7/cowin-bot
def ask_age() -> InlineKeyboardMarkup:
  keyboard = [
    [
      InlineKeyboardButton("45+", callback_data='a45'),
      InlineKeyboardButton("18+", callback_data='a18')
    ]
  ]
  return InlineKeyboardMarkup(keyboard)
コード例 #20
0
def on_style(bot, update: Update, user_data):
    msg: Message = update.message

    user_data.setdefault('style', Style())
    msg.reply_text(COVER + str(user_data['style']),
                   reply_markup=InlineKeyboardMarkup(keyboard))

    return State.choice
コード例 #21
0
    def assemble_inline_keyboard(self, poll, include_publish_button=False):
        inline_keyboard_items = self.get_inline_keyboard_items(poll)
        if include_publish_button:
            publish_button = InlineKeyboardButton(
                "Publish!", switch_inline_query=poll['poll_id'])
            inline_keyboard_items.append([publish_button])

        return InlineKeyboardMarkup(inline_keyboard_items)
コード例 #22
0
    def get_markup(self):

        article = [InlineKeyboardButton(
                    text=i.title,
                    callback_data=f'{i.get_callback_data()} send'
                ) for i in self.articles.all()]
        grouped_article = [article[i:i + 2] for i in range(0, len(article), 2)]
        return InlineKeyboardMarkup(grouped_article)
コード例 #23
0
ファイル: bot.py プロジェクト: ericmiranda7/cowin-bot
def ask_notify() -> InlineKeyboardMarkup:
  keyboard = [
    [
      InlineKeyboardButton("Yes", callback_data='n1'),
      InlineKeyboardButton("No", callback_data='n0')
    ]
  ]
  return InlineKeyboardMarkup(keyboard)
コード例 #24
0
def shift_menu_right(update: Update, context: CallbackContext) -> int:
    query = update.callback_query
    query.answer()
    reply_markup = InlineKeyboardMarkup(
        create_keyboard(context, 1,
                        Subjects.getInstance().get_subjects()))
    query.edit_message_text(text=query.message.text, reply_markup=reply_markup)
    return 0
コード例 #25
0
def SayAboutUs(bot, update, self):
    buttons = [[
        InlineKeyboardButton("К скульптурам", callback_data='Magazine'),
        InlineKeyboardButton("Назад", callback_data='MainMenu')
    ]]
    bot.send_message(chat_id=update.message.chat_id,
                     text=GetSettingsValue(bot_settings.about_us),
                     parse_mode=ParseMode.HTML,
                     reply_markup=InlineKeyboardMarkup(buttons))
コード例 #26
0
def _show_language_selection(bot, update, lang_type, page=0):
    if lang_type == SOURCE_LANGUAGE:
        lang_str = 'source'
        callback_select_type = CALLBACK_TYPE_SOURCE_LANG
        callback_page_type = CALLBACK_TYPE_SOURCE_LANG_PAGE
    elif lang_type == TARGET_LANGUAGE:
        lang_str = 'target'
        callback_select_type = CALLBACK_TYPE_TARGET_LANG
        callback_page_type = CALLBACK_TYPE_TARGET_LANG_PAGE
    else:
        error(bot, update, "Unknown language type: " + str(type))
        return

    global store_helper
    user_id = update.effective_user.id
    src = store_helper.get_src_lang(user_id)
    trg = store_helper.get_trg_lang(user_id)
    src_str = LANGUAGES[
        src] if src in LANGUAGES else src if not None else "not set"
    trg_str = LANGUAGES[
        trg] if trg in LANGUAGES else trg if not None else "not set"

    text = "Your current source language: <b>" + str(src_str) + "</b>, target language: <b>" + str(trg_str) + \
           "</b>.\nPlease chose new <b>" + lang_str + "</b> language: "

    button_list = list(
        map(
            lambda x: InlineKeyboardButton(
                text=x[1],
                callback_data=json.dumps(
                    create_callback_word_dict(callback_select_type, x[0]))),
            list(LANGUAGES.items())[page * LANG_BUTTONS_PER_REPLY:(page + 1) *
                                    LANG_BUTTONS_PER_REPLY]))

    pages_number = math.ceil(len(LANGUAGES) / LANG_BUTTONS_PER_REPLY)
    if pages_number > 1:
        if page > 0:
            button_list.append(
                InlineKeyboardButton(text="Previous page",
                                     callback_data=json.dumps(
                                         create_callback_word_dict(
                                             callback_page_type, page - 1))))
        if page < pages_number - 1:
            button_list.append(
                InlineKeyboardButton(text="Next page",
                                     callback_data=json.dumps(
                                         create_callback_word_dict(
                                             callback_page_type, page + 1))))

    reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=4))
    bot.sendMessage(chat_id=get_chat_id(update),
                    text=text,
                    reply_markup=reply_markup,
                    parse_mode=ParseMode.HTML)
コード例 #27
0
def AskAboutRealeseSquare(bot, update, self):
    button_list = [[
        InlineKeyboardButton("Да", callback_data="RealiseSquare-Yes"),
        InlineKeyboardButton("Нет", callback_data="RealiseSquare-No")
    ]]
    reply_markup = InlineKeyboardMarkup(button_list)
    bot.send_message(chat_id=update.message.chat_id,
                     text='Есть ли у тебя действующий магазин/ площадка....?',
                     parse_mode=ParseMode.HTML,
                     reply_markup=reply_markup)
    self.SetMyState(states.AskRealeseSquare)
コード例 #28
0
ファイル: telegrambot.py プロジェクト: Hadryan/NewsBot
 def __get_keyboard(self, buttons):
     keyboard = []
     if "link" in buttons:
         keyboard.append([
             InlineKeyboardButton("Artikel lesen ↗️", url=buttons["link"])
         ])
     if "magazine" in buttons:
         keyboard.append([
             InlineKeyboardButton("Ausgabe lesen ↗️",
                                  url=buttons["magazine"])
         ])
     return InlineKeyboardMarkup(keyboard)
コード例 #29
0
def get_reply_markup(publication_id):
    def get_star_button(starts):
        text = '⭐️' * starts
        callback = {'publication_id': publication_id, 'points': starts}
        return InlineKeyboardButton(text=text,
                                    callback_data=json.dumps(callback))

    buttons = [[get_star_button(5), get_star_button(4)],
               [get_star_button(3),
                get_star_button(2),
                get_star_button(1)]]
    return InlineKeyboardMarkup(buttons)
コード例 #30
0
def SayHowToFindUs(bot, update, self):
    buttons = [[
        InlineKeyboardButton(text='🌐 Сайт', url="https://www.vase-head.com/"),
        InlineKeyboardButton("📱 Телефон", callback_data="Phone"),
        InlineKeyboardButton("📧 Эл.почта", url="*****@*****.**")
    ]]
    bot.send_message(
        chat_id=update.message.chat_id,
        text=
        'Вы можете :\n📰 Познакомиться с нашим сайтом.\n📞 Связаться с менеджером.\n📬  Написать нам на почту.',
        parse_mode=ParseMode.HTML,
        reply_markup=InlineKeyboardMarkup(buttons))
    SayShowRoomList(bot, update, self)