N
N
N0N1m32020-05-14 19:32:38
Python
N0N1m3, 2020-05-14 19:32:38

Bot vk not working, can you help?

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

And here is what it says in the console:
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.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
W
WolfInChains, 2020-05-14
@N0N1m3

it is written to indicate the group ID in line 12
Now you have it like this
longpoll = VkBotLongPoll(vk, group_id)
It should be something like, but instead of 253235626 your group ID
longpoll = VkBotLongPoll(vk, 253235626)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question