(Python bot) Как отмечать людей в беседе через бота?#2
Взял код из коммента тут (Python bot) Как отмечать людей в беседе через бота? Но у меня вызывается бот только при запуске , по команде не работает.
while True:
try:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.object.peer_id != event.object.from_id:
if event.object.text.lower() == "призыв":
def main():
members = vk.messages.getConversationMembers(
peer_id=2000000001,
)['items']
members_ids = [member['member_id'] for member in members if member['member_id'] > 0]
message = ''
for member_id in members_ids:
message += f'[id{member_id}|Люди]'
vk.messages.send(
peer_id=2000000001,
message=message,
random_id=get_random_id()
)
if __name__ == '__main__':
main()
except Exception as E:
print(Exception)
Ошибка:
Traceback (most recent call last):
File "C:/Users/skise/PycharmProjects/отправлялка/отправка.py", line 14, in
for event in longpoll.listen():
NameError: name 'longpoll' is not defined
Ответы (1 шт):
Вероятная причина ошибки - peer_id, указанный напрямую в коде:
...
peer_id=2000000001,
...
Если у бота ваш диалог имеет ID, отличный от 1, бот работает некорректно. Советую брать peer_id напрямую из event:
...
peer_id = event.object.peer_id
...
Ответ обновлён:
NameError: name 'longpoll' is not defined
Вы не объявили переменную longpoll
Если вы используете этот модуль API, объявление выглядит следующим образом:
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
vk_session = vk_api.VkApi(token='токен группы')
longpoll = VkBotLongPoll(vk_session, 'ID группы')
(Пример bot longpoll этого модуля)
Если же вы используете другой модуль, вам необходимо найти документацию к нему. В любом случае, попробуйте именно этот код. Возможно, даже при использовании другого модуля, объявление сессии и слушателя выглядит сходным образом.