getChatMember / getChatMemberCount / getChatAdministrators
Чтение состава чата
Три метода только читают данные и не требуют прав администратора — достаточно членства бота в чате.
getChatMember
GET ?method=getChatMember&chat_id=123&user_id=42
| Параметр | Тип | Обяз. |
|---|---|---|
chat_id | int | ✓ |
user_id | int | ✓ |
{
"ok": true,
"result": {
"user_id": 42,
"login": "petr",
"name": "Пётр",
"is_bot": 0,
"role": "admin",
"custom_title": "Модератор",
"avatar_url": "https://api.kodari.ru/msg/media.php?key=...",
"permissions": {
"delete_messages": true,
"remove_users": true,
"block_users": false,
"pin_messages": true,
"invite_users": true,
"change_info": false,
"add_admins": false,
"post_messages": false,
"edit_messages": false
}
}
}
role — owner, admin или member. У владельца в permissions все флаги true.
Ошибки: 400 без параметров, 403 если бот не в чате, 404 если пользователь не участник.
getChatMemberCount
GET ?method=getChatMemberCount&chat_id=123
{ "ok": true, "result": 42 }
getChatAdministrators
GET ?method=getChatAdministrators&chat_id=123
Возвращает массив участников с ролями owner и admin в том же формате, что и getChatMember.
{
"ok": true,
"result": [
{ "user_id": 5, "login": "ivan", "name": "Иван", "role": "owner", "custom_title": null, "permissions": { } },
{ "user_id": 42, "login": "petr", "name": "Пётр", "role": "admin", "custom_title": "Модератор", "permissions": { } }
]
}
pykodaribot
member = await bot.get_chat_member(chat_id, user_id)
print(member.status, member.custom_title) # creator / administrator / member
count = await bot.get_chat_member_count(chat_id)
for admin in await bot.get_chat_administrators(chat_id):
print(admin.user.first_name, admin.status)
SDK переводит роли в статусы Telegram-стиля: owner → creator, admin → administrator, member → member.
Проверка прав перед действием:
me = await bot.get_me()
member = await bot.get_chat_member(chat_id, me.id)
if member.permissions and member.permissions.delete_messages:
await bot.delete_message(chat_id, message_id)
17 просмотров