import vk_api
import random
import time
from yandex_translate import YandexTranslate #Импортируем библиотеку
from vk_api.bot_longpoll import VkBotLongPoll
from vk_api.longpoll import VkLongPoll
from vk_api.longpoll import VkEventType
group_id = id из цифр
token = "токен указан"
vk = vk_api.VkApi(token=token)
longpoll = VkBotLongPoll(vk, group_id)
translate = YandexTranslate('токен указан')
#messages = vk.method("messages.getConversations", {"offset": 0, "count": 1})
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and event.to_me and event.text: #Если получили сообщение с текстом\
if event.text == 'Перевод': #если пришло сообщение с текстом "Перевод"
if event.from_user:
vk.messages.send( #Отправляем сообщение
user_id=event.user_id,
message='На какой язык? Указывать двумя буквами.\n Например: Русский - ru, Английский - en' #C текстом "На какой язык? Указывать двумя буквами.\n Например: Русский - ru, Английский - en". Замечание текст должен быть одной строкой
)
elif event.from_chat:
vk.messages.send( #Тоже самое, но для бесед
chat_id=event.chat_id,
message='На какой язык? Указывать двумя буквами.\n Например: Русский - ru, Английский - en'
)
flag = 0 #Шаманский танец для выхода из 2-х циклов
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and event.to_me and event.text: #Если получили сообщение с текстом
trTo = event.text #Сохраняем текст в переменную
if event.from_user:
vk.messages.send( #Отправляем сообщение
user_id=event.user_id,
message='Введите фразу, которую надо перевести '
)
elif event.from_chat:
vk.messages.send( #Тоже самое, но для бесед
chat_id=event.chat_id,
message='Введите фразу, которую надо перевести '
)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: #Если получили сообщение с текстом
trNormal = 1 #Колхозный флаг для ошибки
try: #Исключение, о них поговорим ниже
trFrom = translate.detect(event.text) #Определяем язык
trResult = translate.translate(event.text, trFrom + '-' + trTo) #Переводим
except Exception as e: #Если что-то пошло не так
trNormal = 0 #Пинаем флаг ошибки
print("Exception:", e) #Пишем в консоль
pass
if trNormal == 1: #Если всё хорошо
if event.from_user:
vk.messages.send( #Отправляем сообщение
user_id=event.user_id,
message='Переведено сервисом «Яндекс.Переводчик» translate.yandex.ru\n' + str(trResult['text']))
flag = 1 #Выходим из 2-х циклов
break
elif event.from_chat:
vk.messages.send( #Тоже самое, но для бесед
chat_id=event.chat_id,
message='Переведено сервисом «Яндекс.Переводчик» translate.yandex.ru\n' + str(trResult['text']))
flag = 1
break
if trNormal == 0: #Если всё плохо
if event.from_user:
vk.messages.send( #Отправляем сообщение
user_id=event.user_id,
message='Неправильно введён язык')
flag = 1 #Выходим из 2-х циклов
break
elif event.from_chat:
vk.messages.send( #Тоже самое, но для бесед
chat_id=event.chat_id,
message='Неправильно введён язык')
flag = 1
break
if flag == 1: #Шаманский танец для выхода из 2-х циклов
break
А вот что пишет в консоле:
Traceback (most recent call last):
File "bot1.py", line 12, in
longpoll = VkBotLongPoll(vk, group_id)
File "C:\Users\n0n1m\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\bot_longpoll.py", line 218, in __init__
self.update_longpoll_server()
File "C:\Users\n0n1m\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\bot_longpoll.py", line 231, in update_longpoll_server
response = self.vk.method('groups.getLongPollServer', values)
File "C:\Users\n0n1m\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 646, in method
raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: longpoll for this group is not enabled.