@dmitriy8720

Как сделать проверку, через sender_chat?

Подскажите, как сделать проверку, является ли отправитель сообщения администратором группы. Использую библиотеку 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)
  • Вопрос задан
  • 490 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы