Код бота: Как реализовать команду разбана пользователя с выводом подтверждения в формате Markdown?
Реализация команды разбана пользователя в боте — одна из стандартных задач при разработке модераторских инструментов. Рассмотрим пример на Python с использованием библиотеки `python-telegram-bot`.
## Основная логика команды /unban
Команда должна:
1. Принять ID или username пользователя в качестве аргумента.
2. Проверить права вызывающего (является ли он администратором).
3. Выполнить разбан через API.
4. Вернуть подтверждение в формате Markdown.
## Пример кода
python
from telegram import Update
from telegram.ext import ContextTypes, CommandHandler, Application
async def unban_user(update: Update, context: ContextTypes.DEFAULT_TYPE):
chat = update.effective_chat
caller = update.effective_user
# Проверка прав администратора
admins = await chat.get_administrators()
admin_ids = [admin.user.id for admin in admins]
if caller.id not in admin_ids:
await update.message.reply_text(
«*Ошибка:* У вас нет прав для выполнения этой команды.»,
parse_mode=»Markdown»
)
return
# Проверка аргументов
if not context.args:
await update.message.reply_text(
«*Использование:* `/unban `»,
parse_mode=»Markdown»
)
return
try:
user_id = int(context.args[0])
except ValueError:
await update.message.reply_text(
«*Ошибка:* Укажите корректный числовой ID пользователя.»,
parse_mode=»Markdown»
)
return
# Выполнение разбана
await context.bot.unban_chat_member(chat_id=chat.id, user_id=user_id)
# Подтверждение в Markdown
confirmation = (
f»✅ *Пользователь разбанен*n»
f»👤 ID: `{user_id}`n»
f»🔧 Действие выполнено администратором: @{caller.username}n»
f»📅 Дата: `{update.message.date.strftime(‘%Y-%m-%d %H:%M:%S’)}`»
)
await update.message.reply_text(confirmation, parse_mode=»Markdown»)
# Регистрация хендлера
app = Application.builder().token(«YOUR_BOT_TOKEN»).build()
app.add_handler(CommandHandler(«unban», unban_user))
app.run_polling()
## Что важно учесть
— **Форматирование Markdown**: используйте `*текст*` для жирного, « `текст` « для моноширинного шрифта. В Telegram лучше применять `parse_mode=»MarkdownV2″` для более сложных случаев, экранируя специальные символы.
— **Обработка ошибок**: оберните вызов `unban_chat_member` в блок `try/except`, чтобы поймать исключения API (например, если пользователь не был забанен).
— **Логирование**: рекомендуется записывать все действия по разбану в лог-файл или базу данных для аудита.
— **Безопасность**: всегда проверяйте права вызывающего перед выполнением модераторских действий.
Данный подход легко адаптируется под другие платформы (Discord, VK) с заменой API-вызовов.
