Реализация ответов на сообщение через бота(telethon)
Пытаюсь написать бота который бы отправлял пользователю список учасников телеграм канала ответом на сообщение. Хотел реализовать в чате с ботом, но не нашёл подходящего метода. Есть ли какая-то возможность отвечать на сообщения отправленые боту через библиотеку telethon? Или необходимо использовать иную библиотеку?
Ответы (1 шт):
Библиотека Telethon ориентирована скорее на использование доступного Telegram API с целью автоматизации работы с учётной записью пользователя, что не приветствуется политикой Telegram. Такие аккаунты ещё называют юзер-ботами или селф-ботами. Для создания именно бота можно рассмотреть использование других библиотек.
В aiogram, если хотите асинхронную реализацию, существует метод для подсчёта количества участников чата или канала, для этого ему нужны соответствующие права. Для этого используется метод get_chat_member_count()
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
import asyncio
channel_id = '-100...'
token = "token"
dp = Dispatcher()
bot = Bot(token)
@dp.message(Command('get_users'))
async def get_users(message: types.Message):
chat_id = message.chat.id
members = await bot.get_chat_member_count(chat_id)
await message.answer(f"Количество участников в чате: {members}")
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Аналогичная реализация с помощью библиотеки telebot (pyTelegramBotAPI):
import telebot
channel_id = '-100...'
token = "token"
bot = telebot.TeleBot(token)
@bot.message_handler(commands=['get_users'])
def send_welcome(message):
members = bot.get_chat_member_count(channel_id)
bot.send_message(message.chat.id, f"Количество участников в чате: {members}")
bot.infinity_polling()
Но, к сожалению, текущая документация Telegram API предоставляет возможности получить id
или другие данные всех участников.