Answer the question
In order to leave comments, you need to log in
How to make a VK bot on a python work in a conversation?
I just started to study bots in VK, nagovnokodil bot on python
I want it to be able to work not only in a personal with a group, but also in a conversation
What is needed for this?
import vk_api, time
vk = vk_api.VkApi(token='token')
vk._auth_token()
while True:
messages = vk.method("messages.getConversations", {"offset":0, "count":20, "filter": "unanswered"})
if messages["count"] >= 1:
id = messages["items"][0]["last_message"]["from_id"]
body = messages["items"][0]["last_message"]["text"]
if body.lower() == "ку":
vk.method("messages.send",{"peer_id": id, "random_id":0, "message": "дарова стасян"})
else:
vk.method("messages.send",{"peer_id": id, "random_id":0, "message": "непонел"}) or vk.method("messages.send",{"peer_id": id, "random_id":0, "message": "шо те надо"})
time.sleep(1)
Answer the question
In order to leave comments, you need to log in
vk = vk_api.VkApi(token=api_token)
long_poll = VkBotLongPoll(vk, group_id)
vk_api = vk.get_api()
# api_token - API token we created earlier
# group_id - id of the bot community
see what happens
for event in self .long_poll.listen():
print(event)
while True:
try:
for event in longpoll.listen():
if event.obj.peer_id != event.obj.from_id: #Your
code
except
:
print('ERROR IN LISTENING TO EVENT')
To work with conversations, you need to use Longpoll or callback, I advise Longpoll.
Documentation
Method
Советую делать на callback. В настройках группы указываешь, что можно добавлять бота в беседы. Версию бота ставь 5.80+. В беседе дай боту администратора. Теперь тебе на сервер будет прилетать примерно такой json
from_id - id человека
peer_id - id беседы
обработал сообщение, и отправил его в peer_id. Как-то так
Но для callback нужно иметь сервер или хостинг, да и питон на нем трудно запустить, поэтому советую присмотреться к этой библиотеке на php. И вот кстати в этой статье можешь посмотреть как настраивается callback
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question