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

Как сделать проверку на присутствие в беседе?

Нашел следующую функцию:
def check_kf(peer_id:int) -> list:
	authorize.method("messages.getConversationMembers", {
        "peer_id": peer_id
    })["items"]

Как я понял она позволяет проверять,есть ли человек в беседе или нет. Пользуясь ей,я попытался создать другую функцию:
def add_v_besedy(sender,uid):
	uid = reseived_message[10:19]
	user_id = uid
	if uid in check_kf(3):
		write_message(sender,'text')
	else:
		write_message(sender,'as')

Если ид пользователя(int) в беседе с peer_id = 3,то выполняется функция отправки сообщения.
Когда я запускаю код,у меня выдает ошибку в строке( if uid in check_kf(3): ):
TypeError: argument of type 'NoneType' is not iterable
Как это можно исправить? Я создавал функцию для того,чтобы если пользователь при приглашении в беседу уже состоит в ней писался какой-нибудь ответ
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Для начала
в беседе с peer_id = 3

ID всех бесед начинаются с 2000000000, id=3 - пользователь

Потом, messages.getConversationMembers возращает список словарей в items, так что проверить через if uid in check_kf(3): нельзя.

https://vk.com/dev/messages.getConversationMembers

И плюсом ко всему этому, функция check_kf ничего не возвращает, так что ее нужно доделать
def check_kf(peer_id:int) -> list:
  return authorize.method("messages.getConversationMembers", {
        "peer_id": peer_id
    })["items"]


Как-то так
def add_v_besedy(sender,uid):
  uid = reseived_message[10:19]
  user_id = uid
  users = check_kf(2000000003)
  for user in users:
    if user['member_id']  == user_id:
      write_message(sender,'text')
      return
  write_message(sender,'as')


Ну и в reseived_message[10:19] явно что-то не так
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@CleanyBoom
На самом деле ты просто не возвращаешь ничего из функции, из этого и ошибка, ведь нельзя проверить наличие юзера в списке, если этого списка не существует

def check_kf(peer_id:int) -> list:
  return authorize.method("messages.getConversationMembers", {
        "peer_id": peer_id
    })["items"]
Ответ написан
Комментировать
@sergeyfilippov4
1) Получаешь список участников
2) Проверяешь наличие нужного ID в списке
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект