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
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Два одинаковых декоратора
@bot.message_handler(commands=['start'])

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

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

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