Подсчитать количество пользователей на канале Telegram
Проблема: после того, как пользователь вводит команду /MembersCount, в аргумент функции getChatMembersCount(channel) ничего не передается.
Как сделать так, чтобы после ввода команды /MembersCount пользователь мог ввести идентификатор канала?
@bot.message_handler(commands=['start'])
def start_message(msg):
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
keyboard1.row('/help', '/MembersCount')
bot.send_message(msg.chat.id, 'Starting', reply_markup=keyboard1)
@bot.message_handler(commands=['MembersCount'])
def getChatMembersCount(channel):
bot.get_chat_members_count(chat_id=channel)
Ответы (1 шт):
Автор решения: KABAN PUNK
→ Ссылка
Ответ на ваш вопрос:
sw = {}
@bot.message_handler(commands=['start'])
def start_message(msg):
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
keyboard1.row('/help', '/MembersCount')
bot.send_message(msg.chat.id, 'Starting', reply_markup=keyboard1)
sw[msg.chat.id] = False
@bot.message_handler(content_types=['text'])
def handler(message):
if message.chat.id in sw and sw[message.chat.id]:
count = bot.get_chat_members_count(message.text)
bot.send_message(message.chat.id, count)
sw[msg.chat.id] = False
@bot.message_handler(commands=['MembersCount'])
def getChatMembersCount(channel):
bot.send_message(message.chat.id, 'Input chat_id:')
sw[msg.chat.id] = True
Но лучше, сделайте так, чтобы идентификатор канала передавался сразу внутри команды.
Like this:
/MembersCount < chat_id >
@bot.message_handler(commands=['start'])
def start_message(msg):
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
keyboard1.row('/help', '/MembersCount')
bot.send_message(msg.chat.id, 'Starting', reply_markup=keyboard1)
@bot.message_handler(content_types=['text'])
def handler(message):
if '/MembersCount' in message.text:
cmnd = message.text.split()
count = bot.get_chat_members_count(cmnd[1])
bot.send_message(message.chat.id, count)