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

Как разрешить боту выполнять команды только от определённого пользователя?

Можно ли сделать так чтобы бот отвечал на эту команду только если ее пишет кто-то из администрации беседы?
# -*- coding: utf8 -*-
from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.longpoll import VkLongPoll, VkEventType, VkChatEventType

vk_session = VkApi(token='токен') #токен сообщества
vk = vk_session.get_api()

for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        message = event.obj['message']
        peer_id = message['peer_id'] 
        from_id = message['from_id'] 
        textl = message['text'] 
        if textl.lower() == 'ку': #команда которую нужно принять
            try:
                vk.messages.send(
                    peer_id=peer_id,
                    message='ку', #ответ бота
                    random_id=get_random_id(),
                )
            except Exception as e:
                print ("Сообщение не отправленно")
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
WolfInChains
@WolfInChains
def get_members(peer_id: int) -> list:
  return vk.method("messages.getConversationMembers", {
      "peer_id": peer_id
    })["items"]


def get_admins(peer_id: int) -> list:
  return [
    i["member_id"] for i in get_members(peer_id)
    if i.get("is_admin", False)
  ]


for event in longpoll.listen():
  if event.type == VkBotEventType.MESSAGE_NEW:
    if event.text == "какая-то команда":
      if event.obj.from_id in get_admins(event.obj.peer_id):
        #выполнение команды
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Например так
...
from_id = message['from_id']
if from_id not in ADMINS:
    return
...


перед этим надо определить список пользователей ADMINS вытянув их через getConversationMembers
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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