import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType, VkChatEventType
import random
import requests
import time
import json
from flask import Flask
from gtts import gTTS
#отправка сообщений
def write_text_message(user_id, message):
vk.method('messages.send', {'user_id': user_id, 'message': message, "random_id": random.randint(1, 2147483647)})
def send_photo(user_id, path, message):
a = vk.method("photos.getMessagesUploadServer")
b = requests.post(a['upload_url'], files={'photo': open(path, 'rb')}).json()
c = vk.method('photos.saveMessagesPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
vk.method("messages.send", {"peer_id": user_id, "message": message, "attachment": f'photo{c["owner_id"]}_{c["id"]}', "random_id": random.randint(1, 2147483647)})
def send_audio(user_id):
tts = gTTS(text='hello', lang="ru", lang_check=True)
name = "D:\Бот с домашкой\Audio\Audiovoice.mp3"
tts.save(name)
# Загрузка файла на сервер
a = vk.method("docs.getMessagesUploadServer", {"type": "audio_message", "peer_id": user_id})
b = requests.post(a['upload_url'], files={'file': open(name, 'rb')}).json()
c = vk.method("docs.save", {"file": b["file"]})[0]
d = 'doc{}_{}'.format(c['owner_id'], c['id'])
vk.method('messages.send', {'peer_id': user_id, 'attachment': d, "random_id": random.randint(1, 2147483647)})
print('Successfully') # Удачно
def sending_a_greeting(user_id):
greetings = ['Привет', 'Дароу', 'Хай', 'Дратути', 'Салют', 'Дарова', 'Ку', 'Здравствуй']
write_text_message(user_id, random.choice(greetings))
def new_message(user_id, message):
if (message == 'привет'):
sending_a_greeting(user_id)
elif message == "пока":
write_text_message(user_id, "Пока((")
elif (message == 'help') or (message == 'помощь') or (message == 'f1'):
write_text_message(user_id, 'Вот все, что я могу:')
elif message == 'аудио':
send_audio(user_id)
else:
write_text_message(user_id, 'Извини, не понял, что ты сказал. Чтобы узнать все команды - напиши: help, или помощь, или F1')
# API-ключ созданный ранее
token = ""
# Авторизуемся как сообщество
vk = vk_api.VkApi(token=token)
# Работа с сообщениями
longpoll = VkLongPoll(vk)
# Основной цикл
for event in longpoll.listen():
# Если пришло новое сообщение
if event.type == VkEventType.MESSAGE_NEW:
# Если оно имеет метку для меня бота
if event.to_me:
# текст сообщения от пользователя
new_message(event.user_id, event.text.lower())
elif event.type == VkEventType.USER_RECORDING_VOICE:
write_text_message(event.user_id, 'Я не могу отвечать на голосовые((')
Пытался отправить аудиозапись с помощью этого кода. Но он не работает. Подскажите, пожалуйста, что не так.
(Одна из ошибок - c = vk.method("docs.save", {"file": b["file"]}), KeyError: )