Задать вопрос
@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 ("Сообщение не отправленно")
  • Вопрос задан
  • 152 просмотра
Подписаться 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽