мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
python:week23 [15/10/2019 04:18] ybezrukovpython:week23 [15/02/2021 03:09] (текущий) – [Пример кода бота] Admin Adminovich
Строка 9: Строка 9:
   - В разделе управления зайдите в {{:python:705-706_informatika_soobschenija_2019-05-22_17-24-52.png?400|}}   - В разделе управления зайдите в {{:python:705-706_informatika_soobschenija_2019-05-22_17-24-52.png?400|}}
   - И включите все {{:python:705-706_informatika_soobschenija_2019-05-22_17-25-33.png?400|}}   - И включите все {{:python:705-706_informatika_soobschenija_2019-05-22_17-25-33.png?400|}}
-  - В разделе Настройки - Работа с API переключите Long Poll API с выключен на включен: {{:python:705-706_informatika_callback_api_2019-05-22_17-23-17.png?400|}}+  - В разделе Настройки - Работа с API переключите Long Poll API с выключен на включен. Проверьте, что выпадающем меню Версия API выбрана максимально доступная версия (на картинке 5.50, текущая в районе 5.120): {{:python:705-706_informatika_callback_api_2019-05-22_17-23-17.png?400|}} 
   - В вкладке Long Poll API включите все {{:python:705-706_informatika_callback_api_2019-05-22_17-24-29.png?400|}}   - В вкладке Long Poll API включите все {{:python:705-706_informatika_callback_api_2019-05-22_17-24-29.png?400|}}
  
Строка 36: Строка 36:
 for event in longpoll.listen(): # вечно ждем новых сообщений for event in longpoll.listen(): # вечно ждем новых сообщений
     if event.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло     if event.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло
-        if event.obj.text != '':  # и оно не пустое+        if event.obj.message["text"!= '':  # и оно не пустое
             if event.from_user:   # да еще и от пользователя             if event.from_user:   # да еще и от пользователя
-                user_sent = event.obj.text # возьмем его текст+                user_sent = event.obj.message["text"# возьмем его текст
                 if user_sent == "ПРИВЕТ": # если текст равен "ПРИВЕТ"                 if user_sent == "ПРИВЕТ": # если текст равен "ПРИВЕТ"
                     vk.messages.send(                     vk.messages.send(
-                        user_id=event.obj.from_id,+                        user_id=event.obj.message["from_id"],
                         random_id=get_random_id(),                         random_id=get_random_id(),
                         message="И тебе привет") # Поздороваемся в ответ                         message="И тебе привет") # Поздороваемся в ответ
                 else:                 else:
                     vk.messages.send(                     vk.messages.send(
-                        user_id=event.obj.from_id,+                        user_id=event.obj.message["from_id"], 
 +                        random_id=get_random_id(), 
 +                        message=user_sent) # иначе вернем сообщение назад 
 +</code> 
 + 
 + 
 +====== Пример кода бота с загрузкой сообщений ====== 
 + 
 +<code python> 
 + 
 +import vk_api # подключаем апи бота 
 +from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType  
 +from vk_api.utils import get_random_id 
 + 
 +token = "тот ключ, который вы создали" 
 + 
 +# подключаемся к сообществу 
 +vk_session = vk_api.VkApi(token=token) 
 +vk = vk_session.get_api() 
 + 
 + 
 + 
 +# создаем функцию отправки сообщения 
 +def post_image(api, user_id, image_path): 
 +    upload_server = api.photos.getMessagesUploadServer(peer_id=user_id) 
 +    upload_url = upload_server["upload_url"
 +    files = {'photo': open(image_path, 'rb')} 
 +    response = requests.post(upload_url, files=files) 
 +    result = json.loads(response.text) 
 +    upload_result = api.photos.saveMessagesPhoto(server=result["server"], 
 +                                                 photo=result["photo"], 
 +                                                 hash=result["hash"]) 
 +    return upload_result 
 + 
 +# включаем бота в режим приема сообщений 
 +longpoll = VkBotLongPoll(vk_session, "цифирки в адресе сообществе"
 + 
 +# Обрабтка сообщений 
 +for event in longpoll.listen(): # вечно ждем новых сообщений 
 +    if event.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло 
 +        if event.obj.message["text"] != '':  # и оно не пустое 
 +            if event.from_user:   # да еще и от пользователя 
 +                user_sent = event.obj.message["text"] # возьмем его текст 
 +                if user_sent == "ПРИВЕТ": # если текст равен "ПРИВЕТ" 
 +                    upload_result = post_image(vk, user_id, "путь до картинки"  # выгружаем изображение в скрытый альбом группы и сохраняем ответ от вконтакта 
 +                    vk.messages.send( 
 +                        user_id=event.obj.message["from_id"], 
 +                        random_id=get_random_id(), 
 +                        message="И тебе привет", attachment="photo%s_%s" % (user_id, upload_result[0]["id"]) ) # Поздороваемся в ответ и приложим к сообщению картинку 
 +                else: 
 +                    vk.messages.send( 
 +                        user_id=event.obj.message["from_id"],
                         random_id=get_random_id(),                         random_id=get_random_id(),
                         message=user_sent) # иначе вернем сообщение назад                         message=user_sent) # иначе вернем сообщение назад
 </code> </code>