Telegram ботыБоты

Одобрение заявки в закрытую группу ботом, удаление спама, временная блокировка участников, реализация команд для управления группой на Python

В этой статье мы рассмотрим создание Telegram-бота на Python, который будет автоматически одобрять заявки на вступление в закрытую группу. Мы будем использовать библиотеку Aiogram для работы с Telegram API.

Необходимые библиотеки и инструменты

  1. Python 3.7+
  2. Aiogram (pip install aiogram)
  3. Asyncio (pip install asyncio)

Создание бота и получение токена

  1. Зайдите в Telegram и начните диалог с @BotFather.
  2. Нажмите /newbot и следуйте инструкциям для создания нового бота.
  3. Получите токен для вашего бота.

Код бота

import logging
import asyncio
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.types import ChatMemberUpdated, ChatMember

API_TOKEN = 'your_bot_token'

logging.basicConfig(level=logging.INFO)
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())

async def on_startup(dp):
    await bot.send_message(chat_id=YOUR_CHAT_ID, text='Бот запущен')

async def on_shutdown(dp):
    await bot.send_message(chat_id=YOUR_CHAT_ID, text='Бот остановлен')

@dp.chat_member_handler()
async def auto_approve_member(chat_member_updated: ChatMemberUpdated):
    old_chat_member = chat_member_updated.old_chat_member
    new_chat_member = chat_member_updated.new_chat_member
    
    if new_chat_member.status == ChatMember.MEMBER and old_chat_member.status == ChatMember.MEMBER:
        user = chat_member_updated.from_user
        group = chat_member_updated.chat
        
        await bot.send_message(
            chat_id=group.id,
            text=f"Добро пожаловать, {user.get_mention(as_html=True)}! Ваша заявка на вступление в группу одобрена.",
            parse_mode=types.ParseMode.HTML
        )

if __name__ == '__main__':
    from aiogram import executor
    executor.start_polling(dp, on_startup=on_startup, on_shutdown=on_shutdown)

Запуск бота

Замените 'your_bot_token' на полученный токен вашего бота и YOUR_CHAT_ID на ID закрытой группы. Запустите скрипт, и бот начнет автоматически одобрять заявки на вступление в закрытую группу.

Обратите внимание: Для работы бота в закрытой группе, добавьте его туда в качестве администратора с необходимыми правами для управления участниками.

Теперь у вас есть бот, который автоматически одобряет заявки на вступление в закрытую группу. Вы можете дополнительно настроить бота для выполнения других задач, таких как удаление спама или реализация дополнительных команд для управления группой.

Расширение функционала бота

Вы можете добавить дополнительные функции в своего бота для управления закрытой группой, например:

Удаление спама

Удаление спама: Бот может удалять сообщения, содержащие определенные ключевые слова или ссылки. Для удаления сообщений, содержащих определенные ключевые слова или ссылки, вы можете использовать обработчик сообщений.

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher(bot)

# Список запрещенных слов или ссылок
banned_words = ["badword1", "badword2", "spamlink.com"]

@dp.message_handler(content_types=types.ContentType.TEXT)
async def delete_spam(message: types.Message):
    for word in banned_words:
        if word in message.text:
            await message.delete()
            break

if __name__ == "__main__":
    executor.start_polling(dp)

Временная блокировка участников

Временная блокировка участников: Бот может блокировать участников на определенный период времени, если они нарушают правила группы. Для временной блокировки участников, нарушающих правила, вы можете использовать следующий пример кода:

import asyncio

async def temp_ban_user(chat_id, user_id, duration):
    await bot.kick_chat_member(chat_id, user_id)
    await asyncio.sleep(duration)
    await bot.unban_chat_member(chat_id, user_id)

@dp.message_handler(lambda message: message.text == "/ban", is_chat_admin=True)
async def ban_user(message: types.Message):
    user_to_ban = message.reply_to_message.from_user.id
    chat_id = message.chat.id
    duration = 60  # Время блокировки в секундах
    await temp_ban_user(chat_id, user_to_ban, duration)

Реализация команд для управления группой

Реализация команд для управления группой: Вы можете добавить команды для администраторов группы, которые позволят управлять участниками группы прямо из чата.

Вы можете реализовать команды для администраторов, которые позволяют управлять участниками группы прямо из чата.

@dp.message_handler(lambda message: message.text.startswith("/promote"), is_chat_admin=True)
async def promote_user(message: types.Message):
    user_to_promote = message.reply_to_message.from_user.id
    chat_id = message.chat.id
    await bot.promote_chat_member(chat_id, user_to_promote, can_change_info=True, can_delete_messages=True, can_invite_users=True)

@dp.message_handler(lambda message: message.text.startswith("/demote"), is_chat_admin=True)
async def demote_user(message: types.Message):
    user_to_demote = message.reply_to_message.from_user.id
    chat_id = message.chat.id
    await bot.promote_chat_member(chat_id, user_to_demote, can_change_info=False, can_delete_messages=False, can_invite_users=False)

Здесь мы создали две команды /promote и /demote, которые используются для повышения или понижения участников группы.

Заключение

В этой статье мы рассмотрели создание Telegram-бота на Python для автоматического одобрения заявок на вступление в закрытую группу, удаление спама, а также реализовали временную блокировку участников и сделали несколько команд для управления группой. Это полезный инструмент для управления группами и обеспечения контроля над доступом к группе. Вы можете дополнительно настроить и расширить функционал бота, чтобы он выполнял другие задачи по управлению группой и обеспечивал лучший опыт для участников группы.

3.2/5 - (4 голоса)

Добавить комментарий

Back to top button