Giter Club home page Giter Club logo

vk_spam_bot's Introduction

spam_bot

Бот, предназначенный для рассылки сообщений от имени группы

python 3.8.5

Спам бот Вконтакте предназначен для рассылки сообщений от имени группы (в будущем планируется аддаптация под пользователей). В качестве файла с настройками используется json (для редактирования можно открыть в блокноте) и в качестве БД с id пользователей обычный excel.

Список используемых библиотек и модулей:

import vk_api
import time
import json
import os
import requests
import transliterate
import pandas as pd

from langdetect import detect
from pprint import pprint
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

Основные понятия:

Профиль - название листа в файле excel, с которого бот будет брать id пользователей для рассылки.
Текущий профиль - профиль, который выбран для рассылки.
Главный профиль - профиль с названием user_ids.
Стартовая клавиатура - клавиатура, имеющая команды: 'Start' и 'Change', слева от 'Change' показан текущий профиль.

Список команд:

Change - изменить текущий профиль. После использования этой команды, появится клавиатура с вариантами профилей.
Start - запустить процесс обработки предыдущего сообщения. Далее бот отправит пример сообщения, которое будет рассылаться, а также, выведет клавиатуру с командой Confirm.
Confirm - подтверждение рассылки, после успешного выполнения отправит сообщение со временем, затраченным на рассылку.
Get user ids - запишет в файл 'user_ids.xlsx' на лист 'user_ids' информацию о всех участниках группы (name, id and link).
Close - скрыть клавиатуру (не будет появляться только стартовая клавиатура и клавиатура с командой 'Confirm'*).
Open - открыть клавиатуру.

Варианты работы с ботом:

1) Отправить сообщение для рассылки и потом заюзать команду 'Start'.
2) Переслать сообщение для рассылки с командой 'Start'.

Порядок настройки:

1) В файле 'settings.json' изменить значения по ключам:

	* vk_bot => token (токен сообщества);
	* vk_bot => group_id (id сообщества);
	* vk_bot => admins (массив id пользователей, которые будут иметь возможность взаимодействовать с ботом).
	
2) В файле 'user_ids.xlsx':
	
	* заполнить колонки в главном профиле или создать свой;
	* заполнить одну из двух колонок в профиле (листе): 'id' (id пользователя) или 'link' (ссылка на пользователя). Бот использует данные из колонки 'id', если будет заполнена только 'link', то бот преобразует ссылки в id пользователей и заполнит пропуски в колонке 'id'.

Что можно изменять в 'settings.json'?

  • в options => commands можно изменять названия команд;
  • в options => keyboard => color можно изменить цвет клавиатуры (primary - синий, secondary - белый, negative - красный, positive - зелёный);
  • vk_bot => delete_files отвечает за действие с файлами, которые будут загружаться во время работы (true - удалять, false - не удалять);
  • vk_bot => time_sleep_exceptions время задержки после срабатывания исключений в секундах.

Планы на доработку:

  • написать функцию, которая будет преобразовывать массив профилей для клавиатуры (команда Change) в двумерный массив с определённым количеством столбцов (макс. 5 - ограничение вк) и строк (макс. 10) (в данный момент кнопки выводятся в один столбец - create_rows_in_mas(sheet_names), где sheet_names - массив).
  • возможность рассылки от имени пользователя.
  • добавить команду для получения списка друзей определённого пользователя.
  • добавить возможность получения списка всех бесед и записи информации о пользователях, которые там сидят.
  • добавить GUI.

Коротко о нюансах:

  • не получается обработать аудио альбом и сторонние ссылки (не прикрепляется фотка).
  • история отсылается как сторонняя ссылка.

Все возможные типы вложений (* - всё работает отлично, @ - имеются недоработки):

1. Фотография (type = photo)				*
2. Видеозапись (type = video)				*
3. Аудиозапись (type = audio)				*
4. Документ (type = doc)				*
	Допустимые форматы: любые форматы за исключением mp3 и исполняемых файлов (exe и др).
	4.1. Граффити (type = graffiti)			*
		имеет тип doc, но для получения данных после запроса на сервер нужно юзать graffiti.
	4.2. Голосовое (type = audio_message)	        *
	
5. Ссылка (type = link) 				@
	проблемы с фото (превью)
6. Товар (type = market)				*
7. Подборка товаров (type = market_album)		*
8. Запись на стене (type = wall)			*
9. Комментарий на стене (type = wall_reply) 		*
10. Стикер (type = sticker) 				*
11. Подарок (type = gift)				@
	банально, не вижу смысла разбираться с возможностью отправки подарков.
13. Геометка (geo)					*
14. Сторис / история (type = story)			@
	даёт левую ссылку, без интерфейса вк
15. Ответ на сообщение (reply_message)			*
	отправит первоначальное сообщение, которое было переслано.
16. Пересланное сообщение (fwd_messages)		*
	если переслать более 1 сообщения, то вылезет предупреждение

P.S. можно ответить на сообщение (например, своё же, и написать команду Start) или переслать, но т.к. боту нужно всего лишь одно сообщение, то на несколько пересланных он начнёт ругаться :)

Стоит отметить, что для рассылки документов (4, 4.1, 4.2), боту потребуется сначала скачать* прикреплённые файлы, а потом от своего имени загрузить* их на сервер вк. Это будет происходить при каждой обработке сообщения.. сорян за недоработку :(

vk_spam_bot's People

Contributors

nik20z avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.