@shadrin_ss
Junior

Pytelegrambotapi не видит ссылку bool(re.search), почему при вводе ссылки на вк пропускает все и выводит, что вел не ссылку на вк?

Дам кусок кода в котором идет распознавание ссылки на группу или паблик вк.
Код старый нашел на GitHub но должен работать читал документацию по Bool так и не понял ничего, подскажите может ошибка на поверхности!?

Если не понятно то указанны комментарии и даю ссылку на полого бота, если кому нужно)
https://github.com/mihail64/VKPosterBot

@bot.message_handler(func=lambda message: message.text == u'Добавить страницу ВК ')
@bot.message_handler(commands=['add'])
def add_page_url(message):
    UID = message.chat.id
    
    msg = bot.send_message(UID, 'Чтобы добавить новую страницу, с которой нужно отправлять записи, ' \
        'отправь мне её адрес (например: *vk.com/mzk*):', parse_mode='Markdown', reply_markup=key_hide)
    botan.track(BOTAN_TOKEN, message.chat.id, message, 'Запрос на добавление страницы (add)')
    
    with io.open(str(UID) + '.UID', 'w', encoding='utf-8') as file:
        # Создание временного файла .UID для хранения информации о новой странице
        file.write(unicode(json.dumps({'uid': UID, 'vk' : '', 'vk_original' : '', 'vk_type' : '', \
            'channel' : '', 'type' : '', 'last_id' : '', 'to' : ''}, ensure_ascii=False)))
    bot.register_next_step_handler(msg, add_page_to)

def add_page_to(message):
    UID = message.chat.id
    UTXT = message.text
    
    if UTXT == u'/cancel':
        bot.send_message(UID, 'Хорошо, возвращаю тебя на главную.', reply_markup=key_default)
    elif bool(re.search('(m.|new.|)(?i)vk.com', UTXT)) and \
    bool(re.search('(m.|new.|)(?i)vk.com\/id\d+', UTXT)) == False:
        # Если в адресе обнаружен vk.com, открываем временный файл .UID и заполняем данными
        with open(str(UID) + '.UID', 'r') as file:
            data = json.load(file)

        if bool(re.search('(m.|new.|)(?i)vk.com\/(public|club)', UTXT)):
            data['vk'] = re.sub('(\Ahttp\S?:\/\/|)(m.|new.|)(?i)vk.com\/(club|public)', '', UTXT)
            data['vk_type'] = 'ID'
            api = 'https://api.vk.com/method/wall.get?owner_id=-%s&count=10&filter=owner' % (data['vk'])
        else:
            data['vk'] = re.sub('(\Ahttp\S?:\/\/|)(m.|new.|)(?i)vk.com\/', '', UTXT)
            data['vk_type'] = 'DOMAIN'
            api = 'https://api.vk.com/method/wall.get?domain=%s&count=10&filter=owner' % (data['vk'])
        data['vk_original'] = UTXT.lower()

-------------------------------####################################------------------------------
Пропускает этот кусок и выводит что ссылка не от вк, ну это не ошибка просто понять не могу почему не запускает проверку и не получает данные от вк а сразу выдает сообщение.

        try:
            # Попытка получить данные от vk.com
            items = requests.get(api).json()
            try:
                tmp = items['response'][1]['is_pinned']
                data['last_id'] = items['response'][3]['id']
            except:
                data['last_id'] = items['response'][2]['id']

            with io.open(str(UID) + '.UID', 'w', encoding='utf-8') as file:
                # Если всё прошло успешно, записываем данные в .UID
                file.write(unicode(json.dumps(data)))

            key_choose = types.ReplyKeyboardMarkup(resize_keyboard=True)
            key_choose.row(types.KeyboardButton('В диалог с ботом '))
            key_choose.row(types.KeyboardButton('В публичный канал '))

            msg = bot.reply_to(message, 'Хорошо. Куда нужно присылать новые записи с этой страницы?',
                reply_markup=key_choose)
            bot.register_next_step_handler(msg, add_page_to_type)

-------------------------------####################################------------------------------
Бот сразу перепрыгивает на этот блок.

        except Exception as ex:
            msg = bot.reply_to(message, 'Видимо, ты прислал мне не ссылку *на группу или публичную' \
            ' страницу* ВКонтакте. Попробуй ещё раз.', parse_mode='Markdown')
            bot.register_next_step_handler(msg, add_page_to)

-------------------------------####################################------------------------------

    elif bool(re.search('(m.|new.|)(?i)vk.com\/id\d+', UTXT)):
        msg = bot.reply_to(message, 'Бот умеет отправлять записи только из *групп и публичных страниц*, ' \
            'страницы пользователей (начинаются с *id...*) сейчас не поддерживаются.\nПопробуй прислать ' \
            'другую группу или публичную страницу.', parse_mode='Markdown')
        bot.register_next_step_handler(msg, add_page_to)


    else:
        msg = bot.reply_to(message, 'Видимо, ты прислал мне не ссылку *на группу или публичную страницу* ' \
            'ВКонтакте. Попробуй ещё раз.', parse_mode='Markdown')
        bot.register_next_step_handler(msg, add_page_to)
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы