Как исправить ошибку aiogram, которая возникает при добавлении пользователя в чат через бота?

Как настроить бота так, чтобы при поступлении заявки на вступление в чат администратор получал уведомление и мог сам решить, принимать пользователя или нет? В сообщении возникает ошибка "aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: the chat can't have join requests". Подробный код доступен <a href="https://pastebin.com/5NqzHicL" rel="nofollow">здесь</a>. Также предоставлен <a href="https://pastebin.com/fGJAYZTS" rel="nofollow">код клавиатуры</a> для справки.
  • 25 июля 2024 г. 6:02
Ответы на вопрос 1
Для исправления ошибки aiogram при добавлении пользователя в чат через бота, вам нужно изменить параметр allow_sending_messages в методе set_chat_permissions. Замените значение allow_sending_messages на True, чтобы разрешить отправку сообщений в чате.

```python
permissions = types.ChatPermissions(
    can_send_messages=True,
    can_send_media_messages=True,
    can_send_polls=True,
    can_send_other_messages=True
)
await bot.set_chat_permissions(chat_id=chat_id, permissions=permissions)
```

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

Ниже приведен пример кода для обработки заявок на вступление в чат и отправки уведомления администратору:

```python
@dp.message_handler(content_types=types.ContentType.NEW_CHAT_MEMBERS)
async def new_chat_members(message: types.Message):
    for user in message.new_chat_members:
        await bot.send_message(chat_id=ADMIN_CHAT_ID, text=f"Пользователь {user.full_name} хочет присоединиться к чату. Принять или отклонить заявку?",
                               reply_markup=keyboard)
```

Не забудьте заменить ADMIN_CHAT_ID на ID чата администратора, куда будут отправляться уведомления о новых заявках.

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

Надеюсь, это решит вашу проблему.
Похожие вопросы