Esempio n. 1
0
import os
from time import sleep

import vk_api
import redis
from dotenv import load_dotenv
from loguru import logger
from requests.exceptions import ReadTimeout
from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
from vk_api.utils import get_random_id

load_dotenv()

vk_session = vk_api.VkApi(token=os.environ.get("ACCESS_TOKEN"))
longpoll = VkBotLongPoll(vk_session, os.environ.get("GROUP_ID"))
vk = vk_session.get_api()

ADMIN_ID = "92540660"


def send_message(to_id, message: str) -> None:
    vk.messages.send(peer_id=to_id, random_id=get_random_id(), message=message)


_redis = None


def get_redis():
    global _redis
    if _redis is None:
        _redis = redis.from_url(os.environ.get('REDISTOGO_URL'))
Esempio n. 2
0
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import sessionmaker

# достаем токен и id группы из файла
with open('./data_for_connect.json', 'r', encoding='utf-8') as file:
    # считываем данные, которые уже есть в файле
    token_and_group_id = json.load(file)
    file.close()
# токен и id группы
token = token_and_group_id['token']
group_id = token_and_group_id['group_id']
# авторизуемся в вк апи
vk_session = vk_api.VkApi(token=token)
# подключаем бота к longpoll серверу
longpoll = VkBotLongPoll(vk_session, group_id=group_id)

# строка с командами
commands_msg = '"кнопки" - чтобы получить кнопки.\n' \
               '"команды" - чтобы получить список команд, доступных боту.\n' \
               '"словарь" - чтобы добавить свои слова в словарь.\n' \
               '"слова" - чтобы посмотреть слова, которые уже есть в словаре.\n\n' \
               'p.s. команды нужно водить без ковычек.\n' \
               'p.p.s. для ввода команд можно использовать кнопки.'

# когда человек хочет найти слово в своем словаре, ему присылается это сообщение
string_for_slova = 'Если вы хотите получить список слов из вашего словаря, начинающихся на какую-то русскую букву, то вам нужно ввести rus - *буква*\n ' \
                   'Пример:\nrus - г\n Если вы хотите получить список слов, начинающихся на какую-то английскую букву, то вам нужно ввести eng - *буква*\n ' \
                   'Пример:\neng - q\n Если хотите закончить поиск слова, введите команду "закончить", или воспользуйтесь кнопкой.'

# когда человек хочет добавить слово в своем словаре, ему присылается это сообщение
Esempio n. 3
0
File: vk.py Progetto: oopss1k/4
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import redis
import bot_common
 
r = redis.Redis(decode_responses=True)
vk_session = vk_api.VkApi(token='', api_version=5.95)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, 185018457)

commands = ['/reg', '/account', '/reset', '/help']
 
AAA = None
BBB = None
CCC = None
 
for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        if event.object.text.lower() == '/reg':
            mh = vk.messages.getHistory(peer_id=event.object.peer_id, count=200)
            for msgg in mh['items']:
                if "Вы успешно зарегистрировались" in msgg["text"]:
                    AAA = 'A'
            if AAA is None:
                uid, passwd = bot_common.new_account(r)
                r.set(f"passwd", "uid")
                vk.messages.send(peer_id=event.object.peer_id, message="[🎉] Вы успешно зарегистрировались\n\n[🔥] Ваш логин: " + str(uid) + "\n[🔥] Ваш пароль " + str(passwd), random_id=0)
            else:
               vk.messages.send(peer_id=event.object.peer_id, message='Вы уже зарегистрированы', random_id=0)
            AAA = None
        if event.object.text.lower() == '/account':
Esempio n. 4
0
 def __doLogin(self):
     vk_session = vk_api.VkApi(token=self.token)
     self.vk = vk_session.get_api()
     self.bot = VkBotLongPoll(vk_session, self.group_id)
Esempio n. 5
0
import requests
import bs4
from datetime import datetime
import log_module
import tg_module
import foodr

# CONSTANTS
DAMN = "197381393"  # for test
VEG = "139197081"  # for prod
GROUP_ID = VEG

# vk auth
vk_session = vk_api.VkApi(token=TOKEN_VEG)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, GROUP_ID)


# check type of user
def type_of_user(userid):

    # user is group
    if str(userid)[0] == "-":
        try:
            group = vk.groups.getById(group_id=userid)
            User = [{
                'id': group[0]['id'],
                'first_name': group[0]['name'],
                'last_name': ""
            }]
            urlid = "club"
Esempio n. 6
0
import Case
from data import token
import data
import random
import re
from vk_api import VkUpload
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
from datetime import datetime


vk_session = vk_api.VkApi(token=token)  # #Регистрация
vk = vk_session.get_api()
today = datetime.today().weekday()  # #номер для недели
upload = VkUpload(vk_session)  # #Для загрузки изображений
longpoll = VkBotLongPoll(vk_session, 178266951)
COMMANDS = [
    '!курс',
    '!иб',
    'извините',
            ]

ANSWERS = [
           'КУПИТЕ КУРС',
           'ИБЭЭЭЭЭ',
           'Прощаю',
           ]
STICK_CMD = ['хоба', 'слышь, работать']
STICKS = [6111, 6138]

Esempio n. 7
0
import os
import urllib
import wget
import xlrd
import time

vk = vk_api.VkApi(
    token=
    "853ef0df30751a1ad0e0086b0be9a6b855d850bcadea940e3da0a49d899d49067d83b551e33276ee68ada"
)

vk._auth_token()

vk.get_api()

longpoll = VkBotLongPoll(vk, 191998639)

while True:
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            if event.object.peer_id != event.object.from_id:
                userText = event.object.text.lower()
                if userText == "!#":

                    date = datetime.datetime.now()

                    day = date.day
                    dayPlus1 = date.day + 1
                    dayPlus2 = date.day + 2
                    month = date.month
                    year = str(date.year)
Esempio n. 8
0
def main():
    token = (
        'e454041c2d0bc35bd37e0e8437c83e42b25742216d9c57643e18c61974f29d725c3a7bd796b73f98acd56'
    )
    vk_session = vk_api.VkApi(token=token)
    vk_session._auth_token()
    botlongpool = VkBotLongPoll(vk_session, group_id=188220345)
    vk = vk_session.get_api()
    print('Бот запущен.')
    iam_timer()
    global usr_dict
    kick_msg = False
    for event in botlongpool.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            parsing_str = str(event.object.message)
            parsed_str = ast.literal_eval(parsing_str)
            msg_id = parsed_str['conversation_message_id']
            usr_id = parsed_str['from_id']
            #print(parsing_str)
            if event.chat_id == 2:
                print('Тестовый чат')
            if event.chat_id == 3:
                print('Пошлый Чат')
            if event.chat_id == 4:
                print('Ламповый Чат')
            print(msg_id)
            bot_pi_keyword = parsing_str.lower().find('бот пиздюк')
            if bot_pi_keyword > -1:
                vk.messages.send(chat_id=event.chat_id,
                                 message='Я не пиздюк!',
                                 random_id=randint())
            try:
                ogg_url = parsed_str['attachments'][0]['audio_message'][
                    'link_ogg']
                mp3_url = parsed_str['attachments'][0]['audio_message'][
                    'link_mp3']
                print(ogg_url)
                if event.chat_id < 4:
                    d = usr_dict.get(usr_id)
                    if d is not None:
                        if int(d) > 4:
                            print('Превышен лимит')
                            kick_msg = True
                        else:
                            usr_dict[usr_id] = int(d) + 1
                    else:
                        usr_dict[usr_id] = 1
                        print('Первое предупреждение')
                    try:
                        vk_user = vk.users.get(user_ids=usr_id,
                                               fields='',
                                               name_case='Nom')
                        len_str = len(str(vk_user))
                        vk_user_str = (str(vk_user)[1:(len_str - 1)])
                        vk_user_parsed = ast.literal_eval(vk_user_str)
                        first_name = vk_user_parsed['first_name']
                        last_name = vk_user_parsed['last_name']
                    except:
                        first_name = ''
                        last_name = ''
                        print('Не смог получить имя')
                    print('Голосовое сообщение')
                    voice = urllib.request.urlopen(ogg_url).read()
                    mp3 = urllib.request.urlopen(mp3_url).read()
                    try:
                        v2t = WitAi.recognize(mp3)
                    except:
                        v2t = s2t('b1g0g1nrj67c0se5efad', key, voice)
                    try:
                        if first_name != '':
                            if kick_msg == True:
                                message = (
                                    '[' + first_name + ' ' + last_name +
                                    ']:\n' +
                                    'Напоминаю о лимите в 5 сообщений в час\n'
                                    'Скоро за превышение будет пред.\n' +
                                    'Текст сообщения:\n' + v2t)
                                kick_msg = False
                            else:
                                message = ('[' + first_name + ' ' + last_name +
                                           ']:\n' + v2t)
                            print(message)
                        else:
                            message = v2t
                        vk.messages.send(chat_id=event.chat_id,
                                         message=message,
                                         random_id=randint())
                    except:
                        print('Ошибка отправки текста госового сообщения')
            except:
                pass
Esempio n. 9
0
import sys

import requests
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import random

vk_session = vk_api.VkApi(
    token=input('inter token'
    ))

longpoll = VkBotLongPoll(vk_session, input('group id'))
vk = vk_session.get_api()


def map_type():
    return f"Choose type of map"

def get_coords(toponym_to_find):
    geocoder_api_server = "http://geocode-maps.yandex.ru/1.x/"

    geocoder_params = {
        "apikey": "40d1649f-0493-4b70-98ba-98533de7710b",
        "geocode": toponym_to_find,
        "format": "json"}

    response = requests.get(geocoder_api_server, params=geocoder_params)

    if response:
        json_response = response.json()
        toponym = json_response["response"]["GeoObjectCollection"][
Esempio n. 10
0
import traceback
from vk_api import VkApi, VkUpload
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

if __name__ == '__main__':
    vk = VkApi(token='токен от группы')
    upload = VkUpload(vk)
    longpoll = VkBotLongPoll(vk, 'id группы')
    api = vk.get_api()

    while True:
        try:
            for event in longpoll.listen():
                if event.type == VkBotEventType.MESSAGE_NEW:
                    peer_id = event.obj.message['peer_id']
                    text = event.obj.message['text']

                    print(peer_id, text)

                    with open('text.txt', 'r') as f:
                        msg = f.read().strip()

                    img = upload.photo_messages('test.jpg', peer_id)[0]
                    img = f'photo{img["owner_id"]}_{img["id"]}'

                    if text.lower() == 'logs':
                        m = api.messages.send(peer_id=peer_id,
                                              random_id=0,
                                              message=msg,
                                              attachment=img)
Esempio n. 11
0
File: test.py Progetto: megorka/vk
import requests


def getConnection():
    connection = pymysql.connect(host='sql11.freemysqlhosting.net',
                                 user='******',
                                 password='******',
                                 db='sql11407890',
                                 charset='utf8mb4',
                                 cursorclass=mymysql.cursors.DictCursor)
    return connection


vk_session = vk_api.VkApi(
    token=
    "1d1698a3e7f848ae7b8966dd63d07c1e2458ce99d9317f03747c2bb5f75086f7298dfbc42064948753e07"
)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, "204161431")
#Проверка действий
for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        #Проверяем не пустое ли сообщение нам пришло
        if event.obj.text != '':
            #Проверяем пришло сообщение от пользователя или нет
            if event.from_user:
                #Отправляем сообщение
                vk.messages.send(user_id=event.obj.from_id,
                                 random_id=get_random_id(),
                                 message=event.obj.text)
Esempio n. 12
0
def main():
    print('Как скажите')
    rules = f'{random.choice(["Куда встал? Сиди пиши правила", "Ладно сидим и пишем это гов...", "А игру кто-нибудь деелает?"])}'
    gruop_id = 194651076
    vk_session = vk_api.VkApi(
        token=
        'bb37681562bc4a86332f6e6ca1e9110af1e817d2dd7872f1fba77fb13df2e4d15a94e4d4aed37f9040816'
    )
    vk = vk_session.get_api()
    long_poll = VkBotLongPoll(vk_session, gruop_id)
    for event in long_poll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            msg = event.message
            uid = msg.from_id
            user = vk.users.get(user_ids=uid, fields=['city'])[0]
            if msg['text'] not in ['1', '2', '3', '4']:
                vk.messages.send(
                    user_id=uid,
                    message=f'Привет, {user["first_name"]} {user["last_name"]}',
                    random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'Как жиза? Чё надо?',
                                 random_id=get_random_id())
                vk.messages.send(
                    user_id=uid,
                    message=
                    f'Мои ухи недоразвиты (как и можг) поэтому только заранее заложенные команды.',
                    random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'Вот список команд',
                                 random_id=get_random_id(),
                                 keyboard=keyboard)
                vk.messages.send(user_id=uid,
                                 message=f'Вот список команд',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'1 - Список команд',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'2 - Правила игры',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'3 - Инффа о разрабах',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'4 - Последняя новость',
                                 random_id=get_random_id())
            elif msg['text'] == '1':
                vk.messages.send(user_id=uid,
                                 message=f'Вот список команд',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'1 - Список команд',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'2 - Правила игры',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'3 - Инффа о разрабах',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'4 - Последняя новость',
                                 random_id=get_random_id())
            elif msg['text'] == '2':
                vk.messages.send(
                    user_id=uid,
                    message=f'Z--z-z-z-z-z-z-z-z--z-z-z-z--z-z-z-z-z--z-z-z',
                    random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=f'Пацаны он ушел?',
                                 random_id=get_random_id())
                vk.messages.send(user_id=uid,
                                 message=rules,
                                 random_id=get_random_id())
            elif msg['text'] == '3':
                vk.messages.send(user_id=uid,
                                 message=f'Ну там есть Илья, Иван и Леха',
                                 random_id=get_random_id())
            elif msg['text'] == '4':
                f1 = open('news.txt', 'r')
                vk.messages.send(user_id=uid,
                                 message=f'{f1.read()}',
                                 random_id=get_random_id())
                f1.close()
Esempio n. 13
0
import requests
import random
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

session = requests.Session()
token = '38b60dcff0e7f2091a4d36c4ef30655cad47036013860f7104977b7ed6daeff142ee245ed702dfe3404b3'
vk_session = vk_api.VkApi(token=token)
vk = vk_session.get_api()
# try:
#     vk_session.auth(token_only=True)
#     print(vk_session.api_version)
# except vk_api.AuthError as error_msg:
#     print(error_msg)

longpoll = VkBotLongPoll(vk_session, 116472426)
vk = vk_session.get_api()
print(vk_session.api_version)
for event in longpoll.listen():
    print("new event")
    if event.type == VkBotEventType.MESSAGE_NEW and event.object['text']:
        # Слушаем longpoll, если пришло сообщение то:
        if event.object['text'] == 'ты сука?' or event.object[
                'text'] == 'ты чо':  # Если написали заданную фразу
            if event.from_user:  # Если написали в ЛС
                vk.messages.send(  # Отправляем сообщение
                    user_id=event.user_id,
                    message='слыш ты чо бля',
                    random_id=random.randint(0, 999999999999999))
            elif event.from_chat:  # Если написали в Беседе
                vk.messages.send(  # Отправляем собщение
Esempio n. 14
0
            "type": "text",
            "payload": json.dumps(payload),
            "label": label
        },
        "color": color
    }


vk = vk_api.VkApi(token=tokens.token  #Вставь свой 
                  )
connected_peers = []
peers = os.listdir("./admins/")
for peer in peers:
    connected_peers.append(int(os.path.basename(peer)))

longpoll = VkBotLongPoll(vk, tokens.groupID,
                         wait=259200)  #Вставь свой ID группы в пустое поле
hello = [
    "Приветики)", "Hello", "👋🏻", "Привет!", "Здравствуй",
    "Приветики) Знаешь как пользоваться ботом?) Нет? Тогда напиши /help))"
]
otvet = [
    "Да)?", "Ммм?", "Я знаю, что ты хочешь 😏",
    "Дай угадать, зачем ты меня зoвешь 😉", "Да?", "Слушаю 😊",
    "Разработчик бота не несет никакой ответственности за его содержимое!"
]

#Load pic count
f = open("./pic", "r")
pic = int(f.read())
f.close()
Esempio n. 15
0
import vk_api
import requests
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

vk_session = vk_api.VkApi(
    token=
    "878fce9d7476eb28d019f8aa393e2a720030c1350acb857e3cbe4150c96fc6981de6417ae556611573220"
)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, "187553815")

for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        if event.obj.text != '':
            if event.from_user:
                str = event.obj.text.split(' ')
                if str[0] == 'погода':
                    city = input('Введите город:')
                    res = requests.get(
                        "http://api.openweathermap.org/data/2.5/weather",
                        params={
                            'q': city,
                            'units': 'metric',
                            'lang': 'ru',
                            'APPID': 'ff804351b97f7a93823cbf829df18b62'
                        })
                    data = res.json()
                    reply += "conditions:" + data['weather'][0]['description']
                    reply += "temp:", data['main']['temp']
                    reply += "temp_min:", data['main']['temp_min']
Esempio n. 16
0
from random import randrange

import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

from weather import current_weather, time_of_sunrise, time_of_sunset
from gif_maker import create_gif, shakalize

# information files
from config import token
from info import number_base

vk_session = vk_api.VkApi(token=token)  # Передаем токен сообщества
vk = vk_session.get_api()
groupId = 202528897
longpoll = VkBotLongPoll(vk_session, groupId)


def send_msg(id, text):
    sleep(0.5)
    return vk_session.method("messages.send",
                             {'chat_id': id,
                              'message': text,
                              "random_id": 0})


def send_photo(id, attachment):
    '''отправляем фото в чат'''
    sleep(0.3)
    return vk_session.method("messages.send",
                             {'chat_id': id,
Esempio n. 17
0
from random import random
from vk_api import VkApi, VkUpload
from datetime import datetime
from vk_api.longpoll import VkLongPoll
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from toks import mainToken, idGroup

print(
    "\n\nWelcome to:        ___                            ___                 \n      ___         /__/|            _____         /  /\          ___   \n     /__/\       |  |:|           /  /::\       /  /::\        /  /\  \n     \  \:\      |  |:|          /  /:/\:\     /  /:/\:\      /  /:/  \n      \  \:\   __|  |:|         /  /:/~/::\   /  /:/  \:\    /  /:/   \n  ___  \__\:\ /__/\_|:|____    /__/:/ /:/\:| /__/:/ \__\:\  /  /::\   \n /__/\ |  |:| \  \:\/:::::/    \  \:\/:/~/:/ \  \:\ /  /:/ /__/:/\:\  \n \  \:\|  |:|  \  \::/___/      \  \::/ /:/   \  \:\  /:/  \__\/  \:\ \n  \  \:\__|:|   \  \:\           \  \:\/:/     \  \:\/:/        \  \:\ \n   \  \::::/     \  \:\           \  \::/       \  \::/          \__\/\n    \__\__/       \__\/            \__\/         \__\/              \nFuc$*ng bot for conversations! \n1. Comands: '/Старт', 'Бот инфо'   2. With users: none\n\n"
)

vkSession = VkApi(token=mainToken)
vk = vkSession.get_api()
longpoll = VkBotLongPoll(vkSession, idGroup)

upload = VkUpload(vkSession)

start_day = int(1)
minutka = 0

for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat:
        message = event.obj['message']
        peer_id = message['peer_id']
        text = message['text']

        if text.lower() == 'бот инфо':
            random_id = round(random() * 10**9)
            chat_id = int(event.chat_id)

            vkMessage = "Всем привет, я бот ! Developer, но меня можно звать просто, бот."
Esempio n. 18
0
import vk_api
import requests
from other import admin_token, admin_id
from vk_api.bot_longpoll import VkBotLongPoll

session = requests.Session()
vk = vk_api.VkApi(token=admin_token)
vk._auth_token()
longpoll = VkBotLongPoll(vk, admin_id)



Esempio n. 19
0
File: 12.py Progetto: nentu/hackaton
from vk_api import VkApi
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import threading, datetime
import json
import pandas as pd
# Общие

GROUP_TOKEN = '724ac9ca603d6d82f66f9716a19b06fb26108aad5d533deaefd375b7dd38853c3471bce39905f155bad0f'
API_VERSION = '5.120'

# Запускаем бот
vk_session = VkApi(token=GROUP_TOKEN, api_version=API_VERSION)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, group_id=204037695)


def create_empty_keyboard():
    keyboardd = VkKeyboard.get_empty_keyboard()
    return keyboardd
    # Эта функция используется для закрытия клавиатуры


def courses(event):
    global main_list
    msg_send(
        event.object.peer_id, 'Запустится поиск по ключевым словам\n'
        'Список кружков: (сортировка в алфавитном порядке)\n'
        '(название кружка), (ссылка на группу), (Имя и фамилия преподавателя), (ссылка на его стр в вк), (Твоя средняя оценка)/(Средняя оценка по группе)',
        coutses_keyboard())
Esempio n. 20
0
def main():
    morph = pymorphy2.MorphAnalyzer()
    db_session.global_init('school_db')
    db_sess = db_session.create_session()

    vk_session = vk_api.VkApi(token=TOKEN)
    vk = vk_session.get_api()
    longpoll = VkBotLongPoll(vk_session, -VK_ID)

    keyboard = VkKeyboard()
    keyboard.add_button('Мероприятия', color='primary')
    user_keyboard = keyboard.get_keyboard()

    admin_keyboard = deepcopy(keyboard)
    admin_keyboard.add_line()
    admin_keyboard.add_button('Добавить', color='positive')
    admin_keyboard.add_button('Удалить', color='negative')
    admin_keyboard = admin_keyboard.get_keyboard()

    cancel_keyboard = VkKeyboard()
    cancel_keyboard.add_button('Отмена', color='negative')
    cancel_keyboard = cancel_keyboard.get_keyboard()

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            vk_id = event.obj.message['from_id']
            admin = db_sess.query(Admin).filter(Admin.vk_id == vk_id).first()
            text = event.obj.message['text']

            params = {
                'user_id': vk_id,
                'random_id': random.randint(0, 2**64),
                'message': ''
            }
            attachments = []
            if admin:
                admin_event = db_sess.query(Event). \
                    filter(Event.owner == vk_id, Event.is_added.is_(False)).first()
                if admin.status == 0:
                    if text == 'Добавить':
                        admin.status = 1
                        if not admin_event:
                            params['message'] = 'Для добавления мероприятия ' \
                                                'перешлите запись из данного сообщества ' \
                                                'о мероприятии в переписку'
                            new_event = Event(owner=vk_id, is_added=False)
                            db_sess.add(new_event)
                        else:
                            params[
                                'message'] = 'Нельзя добавлять два мероприятия одновременно'
                    elif text == 'Удалить':
                        admin.status = 2
                        params['message'] = 'Для удаления мероприятия из списка' \
                                            ' перешлите запись о мероприятии в переписку'
                elif admin.status == 1:
                    if text == 'Отмена':
                        params[
                            'message'] = 'Вы больше не добавляете мероприятие'
                        admin.status = 0
                        db_sess.query(Event).filter(
                            Event.id == admin_event.id).delete()
                    else:
                        if not admin_event.post_id:
                            is_added = False
                            response_attachments = event.obj.message[
                                'attachments']
                            ts = datetime.now().timestamp()
                            current_events = db_sess.query(Event).filter(
                                Event.is_added.is_(True), Event.time_to > ts)
                            for a in response_attachments:
                                if a['type'] == 'wall':
                                    wall = a['wall']
                                    if wall['to_id'] == VK_ID:
                                        wall_id = wall['id']
                                        in_list = False
                                        for ce in current_events:
                                            if ce.post_id == wall_id:
                                                in_list = True
                                                break
                                        if not in_list:
                                            admin_event.post_id = wall_id
                                            is_added = True
                                            break
                            if is_added:
                                params['message'] = 'Отлично. ' \
                                                    'Теперь отправьте дату начала мероприятия ' \
                                                    'в формате |ДД.ММ.ГГГГ ЧЧ:ММ|'
                            else:
                                params['message'] = 'Вы не отправили корректную ' \
                                                    'запись из данного сообщества'
                        elif not admin_event.time_from:
                            r = text_to_seconds(text)
                            if isinstance(r, str):
                                params['message'] = f'{r}. Попробуйте ещё раз. ' \
                                                    f'Формат |ДД.ММ.ГГГГ ЧЧ:ММ|'
                            else:
                                admin_event.time_from = r
                                params['message'] = 'Отлично. ' \
                                                    'Теперь отправьте дату конца мероприятия ' \
                                                    'в формате |ДД.ММ.ГГГГ ЧЧ:ММ|'

                        elif not admin_event.time_to:
                            r = text_to_seconds(text)
                            if isinstance(r, str):
                                params['message'] = f"{r}. Попробуйте ещё раз"
                            else:
                                admin_event.time_to = r
                                params[
                                    'message'] = 'Запись добавлена в мероприятия'
                                admin_event.is_added = True
                                admin.status = 0
                elif admin.status == 2:
                    if text == 'Отмена':
                        params['message'] = 'Вы больше не удаляете мероприятие'
                        admin.status = 0
                    else:
                        is_deleted = False
                        response_attachments = event.obj.message['attachments']
                        for a in response_attachments:
                            if a['type'] == 'wall':
                                wall = a['wall']
                                if wall['to_id'] == VK_ID:
                                    wall_id = wall['id']
                                    db_sess.query(Event).filter(
                                        Event.post_id == wall_id).delete()
                                    is_deleted = True
                                    break
                        if is_deleted:
                            params['message'] = 'Мероприятие удалено'
                            admin.status = 0
                        else:
                            params[
                                'message'] = 'Вы не отправили запись из списка мероприятий'
            if not params['message']:
                if text == 'Начать':
                    params['message'] = 'Привет! Нажми кнопку \"Мероприятия\", чтоб узнать' \
                                        ' о событиях, которые скоро пройдут в школе'
                elif text == 'Мероприятия':
                    timestamp = datetime.now().timestamp()
                    attachments = db_sess.query(Event).filter(
                        Event.is_added.is_(True),
                        Event.time_to > timestamp).all()
                    if not attachments:
                        params['message'] = 'Нет доступных мероприятий'
                elif text.startswith(PREFIX):
                    line = text.lstrip(PREFIX)
                    c, *c_params = line.split()
                    if c == 'get_admin':
                        if len(c_params) != 1:
                            params['message'] = 'Неверные параметры'
                        else:
                            key = c_params[0]
                            free_key = db_sess.query(Key).filter(
                                Key.key == key).first()
                            if free_key:
                                if admin:
                                    params['message'] = 'Вы уже администратор'
                                else:
                                    user = Admin(vk_id=vk_id, status=0)
                                    db_sess.add(user)
                                    db_sess.delete(free_key)
                                    params[
                                        'message'] = 'Вы стали администратором'
                            else:
                                params['message'] = 'Неверный ключ'
                    elif c == 'create_key':
                        if admin:
                            new_key = ''.join(
                                random.choice(string.ascii_letters)
                                for _ in range(10))
                            key = Key(key=new_key)
                            db_sess.add(key)
                            params['message'] = f'Новый ключ - {new_key}'
                        else:
                            params[
                                'message'] = 'У вас нет доступа к этой команде'
                    else:
                        params['message'] = 'Такой команды нет'
                else:
                    params['message'] = 'Некорректный ввод'
            if admin:
                if admin.status in [1, 2]:
                    params['keyboard'] = cancel_keyboard
                else:
                    params['keyboard'] = admin_keyboard
            else:
                params['keyboard'] = user_keyboard
            if attachments:
                attachments.sort(key=lambda at: at.time_to)
                for a in attachments:
                    ts = datetime.now().timestamp()
                    message = ''
                    if a.time_from <= ts <= a.time_to:
                        message = 'Уже идет! 🔥'
                    elif ts < a.time_from:
                        days = (a.time_from - ts) // (60 * 60 * 24) + 1
                        w = morph.parse('день')[0]
                        message = f'Начнется через {int(days)} ' \
                                  f'{w.make_agree_with_number(days).word} ' \
                                  f'{random.choice("😀😄😋🤯🤪🥳😸✌✌️")}'

                    vk.messages.send(user_id=params['user_id'],
                                     random_id=params['random_id'],
                                     attachment=f'wall-{-VK_ID}_{a.post_id}',
                                     message=message)
                    params['random_id'] = random.randint(0, 2**64)
            else:
                vk.messages.send(**params)
            db_sess.commit()
Esempio n. 21
0
import time
import vk_api
import random
import config as c
from threading import Thread
from modules import sqlite_methods as m
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

vk = vk_api.VkApi(token=c.g_token)
vk._auth_token()
vk.get_api()
longpoll = VkBotLongPoll(vk, c.group_id)


def send_msg(peer_id: int, message: str, attachment: str = ""):
    return vk.method("messages.send", {**locals(), "random_id": 0})


message_user_ids = []
message_users = m.get_all_message_users()
for user in message_users:
    message_user_ids.append(user[0])

photo_user_ids = []
photo_users = m.get_all_photo_users()
for user in photo_users:
    photo_user_ids.append(user[0])

settings_result = []
settings = m.get_settings(2)
for value in settings:
Esempio n. 22
0
import vk_api, random, os
token = str(os.environ.get('token'))
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

vk_session = vk_api.VkApi(token=token)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, '199179454')
a = 0
for event in longpoll.listen():
    if event.type == VkBotEventType.GROUP_JOIN:
        vk.messages.send(peer_id=463342021,
                         random_id=0,
                         message="Кто-то подписался на группу!")
    if event.type == VkBotEventType.GROUP_LEAVE:
        vk.messages.send(peer_id=463342021,
                         random_id=0,
                         message="Кто-то отписался от группы!")
    if event.type == VkBotEventType.WALL_POST_NEW:
        for i in vk.messages.getConversations(count=200,
                                              fields="id",
                                              filter="all",
                                              extended=1)["items"]:
            id = i['conversation']['peer']['id']
            if id == 2000000001:
                pass
            else:
                try:
                    vk.messages.send(peer_id=id,
                                     message="В группе вышел новый пост!",
                                     random_id=0)
                except:
Esempio n. 23
0
vk = vk_session.get_api()
# chats = vk.messages.getConversationsById(peer_ids=[204074660])
# while True:
#     try:
#         $this->sendMessage(2000000000 + $i, $message);
#         $count++
#     except:
#         if $e->getCode() == 10:
#             //значит такой беседы уже не существует, т.к. она является последней
#             exit($count)
#

# print(chats)
# for chat in chats['items']:
#     print(chat)
longpoll_ = VkBotLongPoll(vk_session, 204074660)
file_read = open('dataBase.txt', 'r', encoding='windows-1251')
temp = file_read.readlines()
file_read.close()
data = requests.get('https://api.vk.com/method/groups.getLongPollServer',
                    params={
                        'access_token': token,
                        'v': 5.21,
                        'group_id': 204074660
                    }).json()['response']

prob = 3

dict_commands = {'/пример', 'глеб', 'коля'}

# for event in longpoll_.listen():
Esempio n. 24
0
# Считываем данные с конфига
with open(CONFIG_PATH, encoding="utf-8") as ymlFile:
    config = yaml.load(ymlFile.read(), Loader=yaml.Loader)

logging.basicConfig(format='%(asctime)s - %(message)s',
                    datefmt='%d-%b-%y %H:%M:%S',
                    level=logging.INFO)

logger = logging.getLogger('vk_api')
logger.disabled = True

# Авторизация бота
authorize = vk_api.VkApi(token=config["group"]["group_token"])

longpoll = VkBotLongPoll(authorize, group_id=config["group"]["group_id"])
bot_upload = VkUpload(authorize)
bot = authorize.get_api()

# Авторизация в пользователя
vk_session = vk_api.VkApi(token=config["user"]["user_token"])

vk = vk_session.get_api()
vk_upload = VkUpload(vk_session)

logging.info("Авторизация прошла успешно")


class Utils:
    def get_random_member(self, chat_id):
        """Возвращает id случайного участника беседы"""
Esempio n. 25
0
#token='33a9a82f77bf742fc80292d35da5750d21a5b962f8716859457ace67c1f5f800a9677ddcad428ed23e546'

# -*- coding: utf-8 -*-
from vk_api import VkApi, VkUpload
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id

vk_session = VkApi(
    token=
    '33a9a82f77bf742fc80292d35da5750d21a5b962f8716859457ace67c1f5f800a9677ddcad428ed23e546'
)
longpoll = VkBotLongPoll(vk_session, 196410704)
upload = VkUpload(vk_session)
vk = vk_session.get_api()


def send_message(event):
    vk.messages.send(
        random_id=get_random_id(),
        peer_id=event.object.message['peer_id'],
        message=event.object.message['text'],
    )


def keyboard(event):
    keyboard = VkKeyboard(one_time=False)
    keyboard.add_button('Я знаю песню!', color=VkKeyboardColor.DEFAULT)
    vk.messages.send(peer_id=event.object.message['peer_id'],
                     random_id=get_random_id(),
                     keyboard=keyboard.get_keyboard(),
Esempio n. 26
0
    while True:
        schedule.run_pending()
        sleep(1)


t = Thread(target=scheduler)
t.start()

# ///////////////////////////////////////////////////////// Конец планировщика /////////////////////////////////////////////////////////

#JASON
accessToken = '2e8f08dbcc12368c29c609f894976aaa5ff4a25d0a43e8e9b084a3fbc6b13765b0f55a667330963279231'
groupId = 183464879

vkBotSession = VkApi(token=accessToken)
longPoll = VkBotLongPoll(vkBotSession, groupId)
vk = vkBotSession.get_api()

while True:
    try:
        for event in longPoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                from_id = event.obj['from_id']
                peer_id = event.obj['peer_id']
                message = event.obj['text'].lower()
                sender_name = list(
                    filter(lambda name: name['id'] == event.obj.from_id, [
                        name for name in vk.messages.getConversationMembers(
                            peer_id=event.obj.peer_id, fields='profiles')
                        ['profiles']
                    ]))[0]
Esempio n. 27
0
def create_session(group_id, token):
    api = vk_api.VkApi(token=token)
    longpoll = VkBotLongPoll(api, group_id)
    session = api.get_api()
    print('session created')
    return {'session': session, 'longpoll': longpoll}
Esempio n. 28
0
import telebot
import vk_api #импорт основного модуля
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType #импорт longpoll и типа ивента
import threading
bott = telebot.TeleBot('1578726351:AAGnwYTAUfiPZapoBJSsXaq83nipzSzrIlI')

vk = vk_api.VkApi(token = '2d92a30dc044df0e72f7ad298ef7b4b6097e765ff2b37866508d8e6c62e3c0fceb72d35585c28d5100b5b') #токен группы
session = vk.get_api()
longpoll = VkBotLongPoll(vk, group_id='203184619')

def sender(text):
    vk.method('messages.send', {'peer_id': 2000000001, 'message': text, 'random_id': 0})

@bott.message_handler(content_types=['text'])
def get_text_messages(message):
    msg = message.text
    aut = str(message.from_user.first_name)
    print(f'{aut}: {msg}')
    sender(f'{aut}: {msg}')

bott.polling(none_stop=True)
Esempio n. 29
0
vk = vk_api.VkApi(
    token=
    "15a4c8cc3ceaa121d1afc5032f40846ef7f01b1655f97560950e5535986e165cb49d472b72c9ede63a1be"
)
#longpoll = VkLongPoll(vk)
bot_api = vk.get_api()
otvet = ''


# Функция посылающая сообщение
def write_msg(peer_id, message):
    random_id = vk_api.utils.get_random_id()
    vk.method('messages.send', {
        'peer_id': peer_id,
        'message': message,
        'random_id': random_id
    })


while True:
    longpoll = VkBotLongPoll(vk, 201978017)
    try:
        for event in longpoll.listen():
            print(event)
            write_msg(
                event.object.peer_id,
                f'@id{event.object.from_id}(Пользователь) написал {event.object.text}'
            )
    except Exception as e:
        print(e)
Esempio n. 30
0
from vk_api import VkApi, VkUpload
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

from time import time

token = "ee5ee2a15eae712b0b63dd92847a7a06cc9e5e0b4014d430b7fdde83897d9cd9cea7978a0754aae391607"
group_id = 186084635

ortom_id = 146297737
god_party = [378922227, 169026012, 101014447, 135224919]

# Для Long Poll
vk_session = VkApi(token=token)

# Для использоания Long Poll API
longpoll = VkBotLongPoll(vk_session, group_id, wait=10)

# Для загрузки фото и других мультимедиа в сообщения
upload = VkUpload(vk_session)

# Для вызова методов vk_api
# vk_api = vk_session.get_api()

greeted = {}
"""
 Идея в том, что мы будем записывать ивенты для каждого отдельного пользователя 
 в словарь. По одной штуке на пользователся (последний)
 В словаре имеется структура {id: [время ласт запроса:int, [доп. данные, ивент]]}
 По сообщению "Спасибо" массив очищается для отдельного пользователя И для пользователя,
  вызывавшего ту-же предпоследнюю команду (до Спасибо) 
  Значения в events_of_users[sender_id][1][1]: