Подскажите, как сделать проверку, является ли отправитель сообщения администратором группы. Использую библиотеку PyTelegramBotApi.
Нашел в документации, как теперь из всего этого,сделать код проверки.
status Статус участника в чате, всегда “administrator”
user Информация о пользователе
get_chat_member( chat_id , user_id , timeout = None , api_kwargs = None )
Используйте этот метод, чтобы получить информацию об участнике чата.
В случае успеха возвращает объект ChatMember.
chat_id Уникальный идентификатор для целевого чата или имя пользователя целевой супергруппы или канала (в формате @channelusername)
user_id Уникальный идентификатор целевого пользователя
ChatMember
Этот объект содержит информацию об одном участнике чата:
Я понял, мне нужны только эти 2.
ChatMemberAdministrator
ChatMemberMember
ChatMemberAdministrator
Представляет участника чата с некоторыми дополнительными привилегиями.
chat (telegram.Chat) - разговор, которому принадлежит сообщение.
message_id (int) - Уникальный идентификатор сообщения внутри этого чата.
sender_chat - Отправитель сообщения, отправленного от имени чата. Сам канал для сообщений канала. Сама супергруппа для сообщений от анонимных администраторов групп. Связанный канал для сообщений, автоматически пересылаемых в дискуссионную группу.
forward_from_chat
По желанию. Для сообщений, пересылаемых по каналам или от анонимных администраторов, информация об исходном чате отправителя.
forward_sender_name (str, необязательно) - имя отправителя сообщений, пересылаемых от пользователей, которые не разрешают добавлять ссылку на свою учетную запись в пересылаемых сообщениях.
forward_from
По желанию. Отправитель исходного сообщения.
from_user (telegram.User, необязательно) - Отправитель, пусто для сообщений, отправляемых в каналы.
getChatAdministrators
$params = [ 'chat_id' => '', ];
getChatMember()
$params = [ 'chat_id' => '', 'user_id' => '', ];
sendMessage() публичный метод
$params = [ 'chat_id' => '', 'text' => '', 'parse_mode' => '', 'disable_web_page_preview' => '', 'disable_notification' => '', 'reply_to_message_id' => '', 'reply_markup' => '', ];
def get_chat_member(self, chat_id, user_id):
Я как то, задавал вопрос, мне прислали, этот код, и толку ноль, так как, у меня в коде, запрещено ссылки размещать, но и для администраторов тоже, а по идеи, должно быть разрешено всё, для администраторов.
Посмотреть кто отправил сообщение, и если отправитель - супергруппа, то ничего не делать.
if message.sender_chat and message.sender_chat == "supergroup":
return
Весь код
import telebot
import time
from telebot import types
from telebot import custom_filters
from telegram.ext import Filters
from telegram.error import BadRequest
from telebot.apihelper import ApiTelegramException
bot = telebot.TeleBot("moy_token")
@bot.message_handler(func=lambda message: message.entities is not None and message.chat.id)
def delete_links(message):
for entity in message.entities:
if entity.type in ["url", "text_link"]:
if message.sender_chat and message.sender_chat == "supergroup":
return
bot.delete_message(message.chat.id, message.message_id)
else:
return
if __name__ == "__main__":
#RUN
bot.polling(none_stop=True)