Задать вопрос
@zeek_yo

Указывает владельца чата вместо указываемого @username, что делать?

Когда прописываю команду /ban @username, то вместо указываемого @username ставится тег владельца чата. При ответе на сообщения такого нет. Перерыл весь итернет, нигде эту информацию не нашёл. Помогите, пожалуйста.

Код:

import asyncio
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.types import ChatPermissions
from aiogram import F
from aiogram.client.session.aiohttp import AiohttpSession

API_TOKEN = "token"

logging.basicConfig(level=logging.INFO)

# Создание бота и диспетчера
session = AiohttpSession()

bot = Bot(token=API_TOKEN, session=session)
dp = Dispatcher()

@dp.message(F.text.startswith("/ban"))
async def ban_user(message: types.Message):
    if not message.reply_to_message:
        await message.reply("Используйте команду в ответ на сообщение пользователя, которого хотите уволить!")
        return

    user_to_ban = message.reply_to_message.from_user
    user_id = user_to_ban.id
    username = user_to_ban.username or "Бездарь"

    chat_member = await bot.get_chat_member(message.chat.id, user_id)
    if chat_member.status == "creator":
        await message.reply("⚠ Невозможно уволить владельца чата!")
        return
    if user_id == message.from_user.id:
        await message.reply("⚠ Нельзя уволить самого себя!")
        return

    epic_messages = [
        f" Приказ об увольнении подписан! @{username}, твоя карьера подошла к концу!",
        " Надзиратель уже ставит свою подпись...",
        " Охрана уже идёт за тобой...",
        f" @{username} уволен! Его пропуск деактивирован, а вещи собраны в коробку и скинуты с 19 этажа!"
    ]

    sent_message = await message.answer(epic_messages[0])

    for msg in epic_messages[1:]:
        await asyncio.sleep(1.5)
        await sent_message.edit_text(msg)

    await asyncio.sleep(3)

    try:
        await bot.ban_chat_member(chat_id=message.chat.id, user_id=user_id)
        await sent_message.edit_text(f"✅ @{username} официально уволен!")
    except Exception as e:
        await sent_message.edit_text(f"⚠ Ошибка при увольнении: {e}")

async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
У вас отсутствует логика для выполнения команды /ban @username.
Вы обрабатываете только случай, когда команда используется в ответ на сообщение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы