Реализация ответов на сообщение через бота(telethon)

Пытаюсь написать бота который бы отправлял пользователю список учасников телеграм канала ответом на сообщение. Хотел реализовать в чате с ботом, но не нашёл подходящего метода. Есть ли какая-то возможность отвечать на сообщения отправленые боту через библиотеку telethon? Или необходимо использовать иную библиотеку?


Ответы (1 шт):

Автор решения: Ben Puls

Библиотека 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 или другие данные всех участников.

→ Ссылка