Как написать бота для вк на python для беседы
Перейти к содержимому

Как написать бота для вк на python для беседы

  • автор:

Как сделать из этого кода, бота для беседы в вк?

Написал код, но этот бот отвечает если только в лс группы писать. Чего не хватает для беседы?

import vk_api, vk from vk_api.keyboard import VkKeyboard, VkKeyboardColor from vk_api.utils import get_random_id from vk_api.longpoll import VkLongPoll, VkEventType vk_session = vk_api.VkApi(token='*********') Lslongpoll = VkLongPoll(vk_session) Lsvk = vk_session.get_api() print("Bot ready!") for event in Lslongpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: if event.text == "тест": if event.from_user: Lsvk.messages.send( user_id = event.user_id, message = 'Тест', random_id = get_random_id() ) 

Отслеживать

задан 22 сен 2020 в 15:11

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для создания ботов, используется другой Longpoll сервер, поэтому замени

from vk_api.longpoll import VkLongPoll, VkEventType Lslongpoll = VkLongPoll(vk_session) 
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk_session = vk_api.VkApi(token='*********', api_version='5.120') Lslongpoll = VkBotLongPoll(vk=vk_session, group_id=*id группы виде числа*) 

Longpoll сервер для ботов возвращает другой вид событий, чем обычный Longpoll, поэтому для того, чтобы бот мог отвечать и в лс и в беседы, нужно при отправке сообщения указывать не id пользователя, а id диалога, поэтому исправь

for event in Lslongpoll.listen(): if (event.type == VkBotEventType.MESSAGE_NEW and event.message.text): if event.message.text.lower() == 'тест': vk_session.method( "messages.send", < "peer_id": event.message.peer_id, "message": 'Text', "random_id": 0 >) 

Написать Бота для беседы ВКонтакте на Python

Добрый день!
Нужно написать с нуля Чат-Бота ВКонтакте для беседы.
Чтобы участники могли писать в беседу только тогда когда пригласят 15 человек в беседу. Бот должен будет удалять автоматически их сообщения в беседе, если они не пригласили например 15 человек то бот должен будет писать в чат: Нужно пригласить 15 людей в беседу чтобы мог писать в данном чате.
Я чат-бот написал.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
# Импорт библиотек для ВКонтакте import vk_api, vk import random from vk_api.longpoll import VkLongPoll, VkEventType import requests # ===================================================== # Авторизация session = requests.Session() login = 'Логин, email или телефон' password = 'Пароль' vk_session = vk_api.VkApi(login, password) try: vk_session.auth(token_only = True) except vk_api.AuthError as err: print(err) # ===================================================== # Функции бота longpoll = VkLongPoll(vk_session) vk = vk_session.get_api() rand = ["Да, господин.", "Да.", "Чего?", "Опять работа"] for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: if event.from_chat: vk.messages.send( chat_id = event.chat_id, message = random.choice(rand) )

Выдаёт ошибку:

1 2 3 4 5 6 7 8 9 10
Traceback (most recent call last): File "C:\UsersНДРЕЙ\Desktop\vk\vkbot.py", line 18, in module> longpoll = VkLongPoll(vk_session) File "C:\UsersНДРЕЙ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\longpoll.py", line 517, in __init__ self.update_longpoll_server() File "C:\UsersНДРЕЙ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\longpoll.py", line 531, in update_longpoll_server response = self.vk.method('messages.getLongPollServer', values) File "C:\UsersНДРЕЙ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\vk_api.py", line 668, in method raise error vk_api.exceptions.ApiError: [15] Access denied: no access to call this method

Подскажите пожалуйста, как это исправить?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

На каком языке программирования проще написать бота для социальной сети Вконтакте?
Начинающий программист, сейчас только паскаль. Считаю, что развитие — основополагающий фактор.

Надо написать бота на Python для Asterios Network
Добрый день форумчане! Помогите написать бота на Python для Asterios Network Api Asterios.

VkNet — создание беседы ВКонтакте
Здравствуйте. Есть код: var getFriendsOnline = ReturnAuthVk().Friends.Get(new.

Синхронизация C# и JS при создании бота для ВКонтакте
Стоит вопрос. На практике у нас дали задание: написать довольно примитивного бота который отвечает.

Создание бота для приложения вконтакте »Poker Shark»
Здравствуйте, хочу написать бота для приложения вконтакте »Poker Shark". Не для того чтоб бот.

Эксперт Python

2679 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
AndreiSchreider, выдать боту нужные права.
Регистрация: 30.09.2019
Сообщений: 103
Теперь при попытке запуска бота выдаёт ошибку:

1 2 3 4
Traceback (most recent call last): File "C:\UsersНДРЕЙ\Desktop\vk\vkbot2.py", line 14, in module> vk_persons = vk.method('messages.getConversationMembers', {'peer_id': 20000000008}) TypeError: __call__() takes 1 positional argument but 3 were given
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# Импорт библиотек для ВКонтакте import vk_api from vk_api.longpoll import VkLongPoll, VkEventType import requests import random # ===================================================== # Авторизация session = requests.Session() vk_session = vk_api.VkApi(token = 'bdd4f15078ccd18137a009eac78ced5036fef4496eef9363d62addbbb0566acd36e032952effaf6e1af61') longpoll = VkLongPoll(vk_session) vk = vk_session.get_api() # ===================================================== # Функции бота vk_persons = vk.method('messages.getConversationMembers', {'peer_id': 20000000008}) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: if int(vk_persons.count) >= 15: if event.text == 'Привет' or event.text == 'Здравствуйте': if event.from_user: vk.messages.send( user_id = event.user_id, random_id = random.getrandbits(64), message = 'Привет!' ) if event.from_chat: vk.messages.send( chat_id = event.chat_id, random_id = random.getrandbits(64), message = 'Привет!', ) else: if event.from_user: vk.messages.send( user_id = event.user_id, random_id = random.getrandbits(64), message = 'Нужно пригласить 15 людей в беседу чтобы бот мог писать в данном чате.' ) if event.from_chat: vk.messages.send( chat_id = event.chat_id, random_id = random.getrandbits(64), message = 'Нужно пригласить 15 людей в беседу чтобы бот мог писать в данном чате.', ) if __name__ == '__main__': main()

Бот VK на Python 2020 года с ответами в беседу

Я очень долго прочесывал интернет в поисках рабочего варианта бота для ВК, разработанного на Python. Никак не мог найти ни одной нормальной, целой статьи — в одной устаревший метод, в другой непонятные ошибки и так далее…

Друзья, я решил поделиться с вами всеми теми знаниями которые приобрел и сейчас мы с вами шаг за шагом напишем хорошего рабочего бота ВК для текущего, 2020, года. Впрочем надеюсь статья не потеряет актуальности и позже.

С чего начать?

Начнем с установки необходимых библиотек. Естественно открываем cmd.exe ( в некоторых случаях может понадобиться запустить от имени администратора) и прописываем туда следующее:

pip install vk
pip install vk_api

Мы установили две библиотеки для работы нашего Python-а с сервисом VK.

Теперь запускаем IDLE и начинаем писать код.

import vk_api, vk from vk_api.keyboard import VkKeyboard, VkKeyboardColor from vk_api.utils import get_random_id

Объясняю: импортируем установленные ранее библиотеки и модули для работы с ними.

Авторизация
vk_session = vk_api.VkApi(token='#ВСТАВЬ СЮДА ТОКЕН ГРУППЫ СО ВСЕМИ РАЗРЕШЕНИЯМИ')

Авторизовались как группа. Важно создать такой токен, который будет разрешать отправку, прием, обработку сообщений и, в принципе, все что нам захочется.

from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType longpoll = VkBotLongPoll(vk_session, 'ID вашей группы без кавычек') vk = vk_session.get_api() from vk_api.longpoll import VkLongPoll, VkEventType

Импортируем модуль longpool для работы с чатами.

Нюансы

Дело в том, что в одной программе нельзя одновременно запустить бота для ответов на ЛС и для работы в беседе, поскольку для этого используются два разных модуля longpool и как только запускается прослушивание longpool-ом на канале «ЛС»(Личные Сообщения) прослушивание другого канала, т.е. чата недоступно, пока не завершится первый процесс прослушивания. Проще говоря задачи могут выполняться исключительно последовательно, а не параллельно. Поэтому в целом коде я деактивирую часть с ЛС, заключив ее в »’ кавычки.

Теперь импортируем то же самое, но для ЛС.

Lslongpoll = VkLongPoll(vk_session) Lsvk = vk_session.get_api() 
Кнопки

Теперь объявим пару функций для кнопок, которые наш бот в будущем будет выдавать по требованию. К ним мы обратимся вскоре ещё раз.

keyboard = VkKeyboard(one_time=True) keyboard.add_button('Привет', color=VkKeyboardColor.NEGATIVE) keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_location_button() keyboard.add_line() keyboard.add_vkpay_button(hash="action=transfer-to-group&group_id=183415444") 
Прием-отправка сообщений из беседы

А теперь будем слушать longpool на предмет новых сообщений. event — переменная в которой будет храниться само сообщение и некоторые данные о нем.

for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW:
if 'Ку' in str(event) or 'Привет' in str(event) or 'Хай' in str(event) or 'Хелло' in str(event) or 'Хеллоу' in str(event): 

Перевод того, что выше: Если слово «Привет» или «. » или «. » содержится в переменной event, тогда:

 if event.from_chat: vk.messages.send( key = (''), server = (''), ts=(''), random_id = get_random_id(), message='Привет!', chat_id = event.chat_id ) 

Проверяем куда направлен наш event. Если в чат тогда вызываем метод отправки сообщений «vk.messages.send».

Внимание

… переменные key, server и ts необходимо заполнить. Эти переменные нужны для установки связи с сервером VK. Чтобы узнать эти переменные, а они у всех свои, нужно авторизованным перейти на сайт VK разработчикам и во вкладке «Пример запроса» ввести ID своей группы.

random_id — это случайный id сообщения, который в новых версиях VK_API теперь обязателен.

chat_id — это идентификатор беседы, из которой пришел event или иначе говоря сообщение.

if ‘Клавиатура’ in str(event):

 if event.from_chat: vk.messages.send( keyboard = keyboard.get_keyboard(), key = ('21b7e67abf6b938c8223242c37b4ff873efe1453'), server = ('https://lp.vk.com/wh183415444'), ts=('3539'), random_id = get_random_id(), message='Держи', chat_id = event.chat_id ) 

Теперь, если пользователь напишет «Клавиатура«, то наш бот щедро предоставит кнопки, о которых мы говорили ранее.

На сложном всё.

Часть с Личными Сообщениями

Теперь отпишем вторую часть для ЛС без особых подробностей.

for event in Lslongpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: vars1 = ['Привет', 'Ку', 'Хай', 'Хеллоу'] if event.text in vars1: if event.from_user: Lsvk.messages.send( user_id = event.user_id, message = 'Привет)', random_id = get_random_id() ) vars2 = ['Клавиатура', 'клавиатура'] if event.text in vars2: if event.from_user: Lsvk.messages.send( user_id = event.user_id, random_id = get_random_id(), keyboard = keyboard.get_keyboard(), message = 'Держи' ) 

Поздравляю! Мы с вами разобрали бота на Python 2020 года. А сейчас я приведу весь код целиком.

 import random, vk_api, vk from vk_api.keyboard import VkKeyboard, VkKeyboardColor from vk_api.utils import get_random_id vk_session = vk_api.VkApi(token='ВСТАВИТЬ ТОКЕН СЮДА') from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType longpoll = VkBotLongPoll(vk_session, 'ID группы без кавычек') vk = vk_session.get_api() from vk_api.longpoll import VkLongPoll, VkEventType Lslongpoll = VkLongPoll(vk_session) Lsvk = vk_session.get_api() keyboard = VkKeyboard(one_time=True) keyboard.add_button('Привет', color=VkKeyboardColor.NEGATIVE) keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_location_button() keyboard.add_line() keyboard.add_vkpay_button(hash="action=transfer-to-group&group_id=еще_раз_ID_группы") for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: if 'Ку' in str(event) or 'Привет' in str(event) or 'Хай' in str(event) or 'Хелло' in str(event) or 'Хеллоу' in str(event): if event.from_chat: vk.messages.send( key = (''), #ВСТАВИТЬ ПАРАМЕТРЫ server = (''), ts=(''), random_id = get_random_id(), message='Привет!', chat_id = event.chat_id ) if 'Клавиатура' in str(event): if event.from_chat: vk.messages.send( keyboard = keyboard.get_keyboard(), key = (''), #ВСТАВИТЬ ПАРАМЕТРЫ server = (''), ts=(''), random_id = get_random_id(), message='Держи', chat_id = event.chat_id ) ''' for event in Lslongpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: vars1 = ['Привет', 'Ку', 'Хай', 'Хеллоу'] if event.text in vars1: if event.from_user: Lsvk.messages.send( user_id = event.user_id, message = 'Привет)', random_id = get_random_id() ) vars2 = ['Клавиатура', 'клавиатура'] if event.text in vars2: if event.from_user: Lsvk.messages.send( user_id = event.user_id, random_id = get_random_id(), keyboard = keyboard.get_keyboard(), message = 'Держи' ) '''

P.S. Ключевые слова, по которым ведется поиск в переменной event будут строгими. Т.Е. если вы сделаете ключевым слово «Ап», то слова «Апостроф», «Аптека» и даже «ап» не будут найдены.

Как за один вечер я написал двух ChatGPT ботов для ВК и Телеграм без опыта в программировании

Привет , меня зовут NED я автор одноименного канала на YouTube и ведущий рубрики ХацкерТайм. На VC.RU сижу в формате рид онли, но тут решил написать свою историю, так как большинство статей подобного формата созданы с целями прорекламить своего платного чат бота , а у меня все не так и ботов можете юзать абсолютно бесплатно !

469 показов
2K открытий

Ну так вот, начнем с того, что в моей ленте вконтакте каждый второй пост был посвящен ChatGPT, а меня как истинного гика это не могло не заинтересовать, да и вообще по предыдущему опыту и знакомству с админом знаменитого deepnude бота видна заинтересованность народа в нейросетях .

Первой проблемой с которой я столкнулся, это была невозможность использовать ChatGPT в РФ, ну мы же с вами люди умные ,поэтому привожу подробный гайд ,как ее обойти

  • Ни в коем случае не заходим в ChatGPT из под РУ региона ,так как сразу получите гео бан и придется чистить коки куки в браузере .
  • Скачиваем любой бесплатный VPN сервис
  • Покупаем виртуальный номер ,по поводу сайта выбирайте любой ,лично я выбрал самый первый из поиска гугл и потратил всего 11 рублей
  • Регистрируем под VPN новый гугловский аккаунт(если ,конечно же вы тупанули, как и я и залогинились под своим основным) либо нажимаете НЕ ВОЙТИ С ПОМОЩЬЮ ГУГЛ АККАУНТА ,а зарегистрировать новый аккаунт . Затем вам будет необходимо ввести все свои данные ,подтвердить почту иииии. Вот тут вам понадобится наш виртуальный номер, после ввода которого вам придет СМС дабы подтвердить, что вы проживаете в другой стране
  • PROFIT!Далее перед нами появится знаменитое окно ,в котором вы можете позадавать боту разные вопросики, попросить его придумать историю про трусы вашей подруги о том, что ваш друг относится к великому царскому роду Романовых с приведением ссылок на научные документы, ну я думаю многие приколюхи вы итак уже знаете и видели их в подобных статьях или пабликах.

Стартовая страница ChatGPT

Сейчас я расскажу вам, как же все таки написать своего бота, на примере телеграмм. Сразу скажу, что опыта в создании ботов у меня нет, да и программировать к своему стыду, я не умею особо. Но, прочитав пару гайдов и посмотрев парочку видосов, я смог запустить своих ботов буквально за 1 вечер.

Для начала представьте ,что вы начальник ,а бот это Васька задрот в вашей фирме, который выполняет задания строго по алгоритму, то есть ему нужно дать четкое техническое задание.

Если вы напишите ему : «братан ,ну ты это напиши мне бота для телеграмма ,чтобы я его монетизировал, купил яхту и уплыл в закат», то бот его выполнит. Да, выполнит ! Но, работать это будет вряд ли. Поэтому для начала хотя бы немного почитайте ,что такое язык Пайтон и как он устроен (спасибо профессору с нашей кафедры, который весь семестр рассказывал про ИИ и Python , не думал , что это все же мне пригодится)

Прочитали ? Теперь, вам необходимо познакомится с тем, как создать самого бота через Bot Father и приступить к написанию технического задания для того, чтобы ChatGPT родил сам себя (я знаю, что на сайте используется модель GPT- 3.5 , а в боте GPT-3 )

Заходим и пишем ему :

Create a Telegram bot in Python using the pyTelegramBotApi library what will communicate with the Open AI API to answer questions submitted by users

Создай Telegram бота на Python, используя библиотеку pyTelegramBotApi, которая будет взаимодействовать с Open AI API, чтобы отвечать на вопросы, заданные пользователями

И тут , офигеть , появляется код ? Чудо, правда ?

Примечание: Так как оригинальный ChatGPT работает нестабильно показываю на примере моего ВК бота

Попросил написать его исходный код для Telegram бота

Далее вам будет необходимо скопировать код в вашу среду разработки, ввести ключик от OpenAIBeta, а также ваш токен полученный от BotFather, а главное не забыть установить все необходимые pip пакеты.

Что касается ВК бота, то его исходный код я не отдам, но скажу если вы умеете думать, то переделать тг бота в вк не составит у вас большого труда !

P.S. Минутка юмора

Спасибо за то что дочитали мою статью, я никогда не писал на подобных площадках, но надеюсь меня не забросают помидорами

Ссылки на ботов оставляю, все бесплатно и без рекламы, буду конечно же благодарен, если подпишитесь на группу в вк, так как в планах есть идея покупки подписки ChatGPT Pro и переноса его API в ВК и ТГ Бота.

И да , я не отвечаю за действия и слова ,которые напишет вам бот, я его не обучал, а всего лишь использовал готовую модель !

В разработке также находится бот ,который умеет запоминать контекст называется «projectND». Доступ только через чатик в сообществе ВК ,будем рады всех принять

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *