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

У self.event отсутствуют атрибуты ref и ref_source. Откуда взять ref и ref_source?

Все версии самые последние

Traceback:
Traceback (most recent call last):
  File "C:\Users\SuperUser\PycharmProjects\botgorillacopy\main.py", line 2827, in run
    self.worksV()
  File "C:\Users\SuperUser\PycharmProjects\botgorillacopy\main.py", line 2784, in worksV
    print(self.event.ref)
          ^^^^^^^^^^^^^^
AttributeError: 'Event' object has no attribute 'ref'


dir(self.event):
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_dict_to_attr', '_list_to_attr', '_parse_chat_info', '_parse_message', '_parse_message_flags', '_parse_online_status', '_parse_peer_flags', '_parse_peer_id', 'attachments', 'datetime', 'extra', 'extra_values', 'flags', 'from_chat', 'from_group', 'from_me', 'from_user', 'message', 'message_data', 'message_flags', 'message_id', 'peer_id', 'random_id', 'raw', 'text', 'timestamp', 'title', 'to_me', 'type', 'type_id', 'user_id']


Код(вставил только то что имеет отношение к проблеме т.к. файл на 2000 строк, если чего-то не дописал то сорян):
class VkBot:
    def __init__(self):
        self.vk_session = vk_api.VkApi(token=vk_token)
        self.longpoll = CreateLongPoll(self.vk_session)
        self.vk = self.vk_session.get_api()
        self.event = None
        self.db = None

    def run(self):
        while True:
            for self.event in self.longpoll.listen():
                if self.event.type == VkEventType.MESSAGE_NEW and self.event.to_me and self.event.text:
                    try:
                        self.db = utils.getOrCreateUserById(self.event.user_id)
                        link = self.vk.utils.getShortLink(url=f"{cfg.linkongroup}?ref={self.db.vk_id}")
                        print(link['url'], link['short_url'])
                        print(self.event.ref, self.event.ref_source)
                    except:
                        traceback.print_exc()

if __name__ == "__main__":
    VkBot().run()
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
@d1n0z4ur Автор вопроса
Разобрался. Нужно было искать атрибуты в ответе
messages.getById(message_ids=[self.event.message_id])

У меня это выглядело следующим образом:
self.vk.messages.getById(message_ids=[self.event.message_id], extended=1)['items'][0]['ref'])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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