Привет, я Валерия Шлыкова (Elka)
Первоклассный open-source Telegram бот для управления чатами, созданный с использованием API Telethon и Aiogram.
SuperAdminBot предоставляет возможность:
- Блокировать пользователей (Ban)
- Мьютить пользователей (Mute)
- Использовать: идентификатор пользователя (User Id), имя пользователя (UserName), информацию о банах и мьютах (is_banned, is_muted) в режиме реального времени
- Сохранять автоматически всю информацию в базу данных PostgreSQL, обеспечивая удобное и надежное управление данными
Необходимая версия python = 3.10.6
Для установки зависимостей выполните:
pip install -r requirements.txt
Создайте файл с именем .env и настройте все необходимые API (если не запускается, удалите все комментарии #):
PG_LINK=postgresql://username:password*@host:port/database #PostgreSQL link to your Database
API_ID=0000000000 #Telegram apps API_ID that you can get at https://my.telegram.org/auth?to=apps
API_HASH='39432jksdsdskjd333mnmn300' #Telegram apps API_HASH that you can get at https://my.telegram.org/auth?to=apps
API_TOKEN='000000000:ANsdnsdnNSDNdnnsdnsndSNDn' #Your bot token that you can get at @BotFather
CHAT_NAME='trapfestchat' #Just your chat name where your bot will used to. For my one it is @trapfestchat
Вот фрагмент кода из main.py
, показывающий основные функции и импорты бота:
Основные импорты:
from telethon import TelegramClient, events import logging from decouple import config from db_handler.db_class import PostgresHandler from aiogram import Bot, Dispatcher from aiogram.types import ChatMemberRestricted, ChatMemberBanned
Инициализация хендлера для базы данных по ссылке из .env:
pg_db = PostgresHandler(config('PG_LINK'))
Инициализация клиента Telegram apps api (Telethon) и бота telegram api (aiogram):
client = TelegramClient('bot', api_id, api_hash) bot = Bot(token=bot_token) dp = Dispatcher(bot)
Пример использования Telethon для получения информации о пользователях:
@client.on(events.NewMessage(pattern='/start')) async def start(event): await event.respond('Привет! Я SuperAdminBot. Как я могу помочь вам сегодня?') raise events.StopPropagation
Обработка действий в чате:
@client.on(events.ChatAction(chats='your_chat')) async def handle_chat_action(event): if event.user_joined or event.user_left: users = await client.get_participants('your_chat') for user in users: if user.username is None: user.username = str(user.id) permissions = await client.get_permissions(event.chat_id, user.id) member = await bot.get_chat_member(event.chat_id, user.id) is_admin = permissions.is_admin is_muted = isinstance(member, ChatMemberRestricted) is_banned = isinstance(member, ChatMemberBanned)