Бот для ВКонтакте. Часть 1

в 18:43, , рубрики: python, Вконтакте API

Бот для ВКонтакте. Где-то недели 3-4 назад я решился написать своего бота для ВКонтакте. Это была старая-престарая моя мечта. Естественно, язык программирования для бота выбрал Python3.

image

Поначалу у меня все получалось довольно таки плохо:

1) Нет библиотек, которые можно было бы использовать как основную и безопасную. Пришлось искать альтернативу. Нашлись 2 библиотеки: vk и vk_requests. Выбрал вторую, поскольку она удобна и понятно была описана.

2) В API социальной сети ВКонтакте есть лимит на количество запросов в секунду, чего я не знал. Пришлось вставлять лимит по запросам в секунду.

3) Спустя первые 100 строк кода возникла проблема в поиске ошибок. необходимо было переписывать получившуюся систему с учетом анализа работы функций и статистики их использования.

4) Отсутствие знаний языка VK Script, а также документации по этому языку дало запрет на использование метода execute (отправление на сервер необходимого количества запросов, обходя лимит в количество запросов в секунду).

Нынешние файлы, загруженные в репозиторий GitHub.

Спустя неделю работы над проектом создал репозиторий на GitHub (тык).

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

Вскоре придумал интересную систему обхода этой защиты. Если у меня возникала данная ошибка, я подключался к своей странице из программы и создавал новое приложение.
Данная идея была хорошей, но создавала каждый раз новое приложение, при этом старое не удаляла. Через некоторое время возникло много приложений в разделе «Приложения» API.

Это мне сильно не понравилось. Вернулся к идее с таймером между каждым запросом. Но это очень долго.

Решил обратиться к опытным разработчикам ботов для ВКонтакте (например, Илья Король). Его бот Liza Kral является самым популярным ботом в ВКонтакте.

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

И только после этого я узнал про Long Poll API.
(Bad-dum-tss)

для тех, кто в танке

Long Polling — это технология, которая позволяет получать данные о новых событиях с помощью «длинных запросов». Сервер получает запрос, но отправляет ответ на него не сразу, а лишь тогда, когда произойдет какое-либо событие (например, придёт новое сообщение), либо истечет заданное время ожидания.

Открытие для меня Long Poll API произошло недавно. Система ещё неоптимизирована, скорость работы оставляет желать лучшего.

Но систему уже можно использовать для небольшой нагрузке (примерно онлайн 50 пользователей).

image

Уже реализованы такие игры, как «Виселица», и «Рандомайзер». Существует также система учетных записей, экономика. Так, существует 5 типов учетной записи: user, vip, tester, admin и cadmin. Верхняя граница количества монет на аккаунте — 100 000 000, нижняя — 0.

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

О библиотеке vk_requests: тык

Автор: Леонид Якубович

Источник

Поделиться

* - обязательные к заполнению поля