Задать вопрос
Fanerka
@Fanerka

Не обновляет количество пользователей в тг боте, почему?

Мне нужно, чтобы когда я нажимал кнопку ПРОВЕРИТЬ (обновлялось количество пользователей которые перешли по универсальной ссылке)

import telebot
from telebot import types
import config

bot = telebot.TeleBot(config.token)
users = []
bot_username = "Тут моё имя бота"

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("ПРОВЕРИТЬ")
    markup.add(btn1)
    chat_id = message.chat.id
    url = f't.me/{bot_username}?start={chat_id}'
    bot.send_message(chat_id, f'{config.con} \n\nСпонсор: [Группа](Ссылка на группу) \n\nВаша универсальная ссылка: {url} \nПриглашённых друзей: {len(users)}/3',
                     parse_mode='Markdown', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def func(message):
    if message.text == "ПРОВЕРИТЬ":
        chat_id = message.chat.id
        url = f't.me/{bot_username}?start={chat_id}'
        bot.send_message(chat_id, f'{config.con} \n\nСпонсор: [Группа](Ссылка на группу) \n\nВаша универсальная ссылка: {url} \nПриглашённых друзей: {len(users)}/3',
                         parse_mode='Markdown')

# обработчик перехода по ссылке
@bot.message_handler(commands=['start'])
def start_with_params(message):
    if message.text.startswith('/start '):
        chat_id = int(message.text.split('/start ')[1])
        user_id = message.from_user.id
        if chat_id not in users:
            users.append(chat_id)
        if len(users) >= 3:
            bot.send_message(chat_id, 'Выполнено условие: 3 пользователя перешли по ссылке')
        else:
            bot.send_message(chat_id, f'Ссылка активна. Перешло {len(users)} пользователей')

bot.polling(none_stop=True)


Как должно выглядеть:

Когда пишу команду старт (тут всё норм и работает)
6417119956262411355239.png

А вот когда пишу ПРОВЕРИТЬ, не обновляет количество перешедших по ссылке
641711ad3e638111849271.png
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Средний 1 комментарий
Решение пользователя soremix К ответам на вопрос (1)
SoreMix
@SoreMix
yellow
Два одинаковых декоратора
@bot.message_handler(commands=['start'])

Из двух срабатывает только первый -> функция start_with_params никогда не выполняется. Либо разделить функции чтобы декораторы были разные, добавив проверку через какую нибудь lambda функцию, либо занести код под одну функцию
Ответ написан