Skip to content

Commit 3f1040f

Browse files
committed
Add bot example
1 parent cc054e8 commit 3f1040f

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

examples/messages_bot/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Бот работает через [longpoll](https://vk.com/dev/using_longpoll)
2+
и использует [DuckDuckGo API](http://api.duckduckgo.com/) для получения ответа
3+
4+
![Пример работы бота](bot.png)

examples/messages_bot/bot.png

240 KB
Loading
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import requests
4+
5+
import vk_api
6+
from vk_api import VkUpload
7+
from vk_api.longpoll import VkLongPoll, VkEventType
8+
9+
10+
def main():
11+
session = requests.Session()
12+
13+
# Авторизация пользователя:
14+
"""
15+
login, password = 'python@vk.com', 'mypassword'
16+
vk_session = vk_api.VkApi(login, password)
17+
18+
try:
19+
vk_session.auth()
20+
except vk_api.AuthError as error_msg:
21+
print(error_msg)
22+
return
23+
"""
24+
25+
# Авторизация группы:
26+
# при передаче token вызывать vk_session.auth не нужно
27+
"""
28+
vk_session = vk_api.VkApi(token='токен с доступом к сообщениям и фото')
29+
"""
30+
31+
vk = vk_session.get_api()
32+
33+
upload = VkUpload(vk_session) # Для загрузки изображений
34+
longpoll = VkLongPoll(vk_session)
35+
36+
for event in longpoll.listen():
37+
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
38+
print('id{}: "{}"'.format(event.user_id, event.text), end=' ')
39+
40+
response = session.get(
41+
'http://api.duckduckgo.com/',
42+
params={
43+
'q': event.text,
44+
'format': 'json'
45+
}
46+
).json()
47+
48+
text = response.get('AbstractText')
49+
image_url = response.get('Image')
50+
51+
if not text:
52+
vk.messages.send(
53+
user_id=event.user_id,
54+
message='No results'
55+
)
56+
print('no results')
57+
continue
58+
59+
attachments = []
60+
61+
if image_url:
62+
image = session.get(image_url, stream=True)
63+
photo = upload.photo_messages(photos=image.raw)[0]
64+
65+
attachments.append(
66+
'photo{}_{}'.format(photo['owner_id'], photo['id'])
67+
)
68+
69+
vk.messages.send(
70+
user_id=event.user_id,
71+
attachment=','.join(attachments),
72+
message=text
73+
)
74+
print('ok')
75+
76+
77+
if __name__ == '__main__':
78+
main()

0 commit comments

Comments
 (0)