Esempio n. 1
0
def main():
    vk_session = vk_api.VkApi(token=TOKEN)
    longpoll = VkBotLongPoll(vk_session, 195095163)
    upload = VkUpload(vk_session)
    vk = vk_session.get_api()

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            vk.messages.send(
                user_id=event.obj.message['from_id'],
                random_id=get_random_id(),
                message="Введи название местности которую хочешь увидеть. Например Калуга"
            )

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

                    keyboard = VkKeyboard(one_time=True)

                    keyboard.add_button(
                        'map (схема)', color=VkKeyboardColor.DEFAULT)
                    keyboard.add_button(
                        'sat (спутник)', color=VkKeyboardColor.POSITIVE)
                    keyboard.add_button(
                        'skl (гибрид)', color=VkKeyboardColor.NEGATIVE)
                    keyboard.add_line()
                    keyboard.add_location_button()

                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     message="Выберите тип карты на клавиатуре",
                                     keyboard=keyboard.get_keyboard(),
                                     random_id=get_random_id())

                    for event in longpoll.listen():
                        if event.type == VkBotEventType.MESSAGE_NEW:
                            map_type = {
                                'map (схема)': 'map', 'sat (спутник)': 'sat', 'skl (гибрид)': 'skl'}
                            im = get_image(
                                toponim, map_type[event.obj.message['text']])

                            photo = upload.photo_messages(photos=im)[0]

                            attachments = 'photo{}_{}'.format(
                                photo['owner_id'], photo['id'])

                            vk.messages.send(
                                user_id=event.obj.message['from_id'],
                                attachment=attachments,
                                random_id=get_random_id(),
                                message=f"Это {toponim}. Что вы еще хотите увидеть?"
                            )
                            break
                    

        else:
            print(event.type)
Esempio n. 2
0
class Bot:
    def __init__(self):
        authorize = vk_api.VkApi(token=config["group"]["group_token"])
        self.longpoll = VkBotLongPoll(
            authorize,
            group_id=config["group"]["group_id"]
        )

        self.bot = authorize.get_api()

    def destroy(self, chat_id):
        # Создаём интригу
        time.sleep(random.randint(1, 5))

        self.bot.messages.send(
            chat_id=chat_id,
            message=random.choice(quotes),
            random_id=get_random_id()
        )

        # Создаём интригу
        time.sleep(random.randint(1, 30))

        # Получаем участников беседы
        chat_members = self.bot.messages.getConversationMembers(
            peer_id=2000000000 + chat_id,
            group_id=config["group"]["group_id"],
        )["items"]

        users = []

        # Не трогаем админов и ботов
        for user in chat_members:
            if user["member_id"] > 0 and "is_admin" not in user:
                users.append(user)

        # Начинаем выборку
        for _ in range(len(users) // 2):
            user = random.choice(users)
            self.bot.messages.removeChatUser(
                chat_id=chat_id,
                user_id=user["member_id"]
            )

            users.remove(user)

        print("Success")

    def run(self):
        print("Начинаю мониторинг сообщений...")

        # Отслеживаем каждое событие в беседе
        while True:
            try:
                for event in self.longpoll.listen():
                    if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get("text") != "":
                        if event.message.get("text").lower() == "танос":
                            self.destroy(event.chat_id)
            except Exception as e:
                print(e)
Esempio n. 3
0
class Bot(threading.Thread):
    """
    Основная часть бота в ней проходит подключение к вк и определение метода отправки сообщения, т.к. это возможно
    и для клиента и для админа.
    """
    def __init__(self, main_token, group_id, *args,
                 **kwargs):  # Инициализация бота
        super(Bot, self).__init__(*args, **kwargs)
        self.group_id = group_id  # id группы передаётся из файла settings.py
        self.vk_session = vk_api.VkApi(
            token=main_token)  # Запуск ВК сессии при помощи токена API
        self.vk = self.vk_session.get_api()
        self.longpool = None
        self.upload = VkUpload(self.vk)

    def run(self):
        """
        Запуск бесконечного мониторинга событий сообщества.
        Если состоялось событие, то вызываем метод on_event из дочернего класса client_bot.
        Так же вызов on_event обвёрнут в try/except что бы работа бота не прикращалась.
        """

        while True:
            try:
                self.longpool = VkBotLongPoll(self.vk_session, self.group_id)
                print('Работа бота началась:')
                for event in self.longpool.listen():
                    self.on_event(event)
            except (requests.exceptions.ReadTimeout,
                    requests.exceptions.ConnectionError):
                print("\n Переподключение к серверам ВК \n")
                time.sleep(5)
            except Exception as exc:
                print('Ошибка в обработке: ', exc)
                time.sleep(5)

    def send_message(self, user_id, text, sticker_id=None, attachment=None):
        """Отправка сообщений от бота"""

        if isinstance(user_id, list):
            for id in user_id:
                self.vk.messages.send(user_id=id,
                                      message=text,
                                      attachment=attachment,
                                      random_id=0)
                # Отправка стикера
                if sticker_id:
                    self.vk.messages.send(user_id=id,
                                          sticker_id=sticker_id,
                                          random_id=0)
        else:
            self.vk.messages.send(user_id=user_id,
                                  message=text,
                                  attachment=attachment,
                                  random_id=0)
            # Отправка стикера
            if sticker_id:
                self.vk.messages.send(user_id=user_id,
                                      sticker_id=sticker_id,
                                      random_id=0)
Esempio n. 4
0
def main():
    try:
        file = open("data.json")
        data = json.load(file)
        token = data['token']
        group_id = data['groupId']
    except FileNotFoundError:
        print("Data file not found, make it by starting setup.py")
        input("Press <enter> to exit. ")
        return
    fileForErrors = open('errorLog.txt', 'w')
    while True:
        try:
            vk_session = vk_api.VkApi(token)

            longpoll = VkBotLongPoll(vk_session, group_id)

            bot = Bot(vk_session)

            for event in longpoll.listen():
                if event.from_chat:
                    t = threading.Thread(target=bot.parseChat,
                                         args=(event, event.obj.text))
                    t.start()
        except Exception as e:
            print(e)
            fileForErrors.write(str(type(e)) + ':' + str(e) + '\n')
            print("Happened error. Restarting...")
Esempio n. 5
0
class Server:
    def __init__(self, api_token, group_id, server_name: str = "Empty"):

        self.api_token = api_token  # TOKEN группы
        self.group_id = group_id  # ID группы
        self.server_name = server_name  # Имя сервера
        self.vk = vk_api.VkApi(token=api_token)  # Сессия
        self.longpoll = VkBotLongPoll(self.vk, group_id)  # LongPoll сервер
        self.vk_api = self.vk.get_api()  # Для вызова методов из vk_api

        self.users = {}  # Словарь для каждого пользователя

    def send_message(self, obj):
        return self.vk.method("messages.send", obj)

    def start(self):
        for event in self.longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                user_id = event.object.from_id
                msg_text = event.object.text

                if user_id not in self.users:
                    self.users[user_id] = Controller(user_id)

                self.send_message(self.users[user_id].input(msg_text))
Esempio n. 6
0
def main():
    vk_session = vk_api.VkApi(
        token=
        'd793c36d91cff1c0f93a216c5a95549a62788fe1cc65cee98728d74d41d90afd3e5a5cfbd789227b6c1e2'
    )
    #токен к моему сообществу

    longpoll = VkBotLongPoll(vk_session, '193282244')

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            vk = vk_session.get_api()
            weekday = [
                'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница',
                'Суббота', 'Воскресенье'
            ]
            try:
                y, m, d = event.obj.message['text'].split('-')
                message = f"^˵◕ω◕˵^) это был {weekday[datetime.datetime(int(y), int(m), int(d)).weekday()]}\n"
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=message,
                                 random_id=random.randint(0, 2**64))
            except:
                vk.messages.send(
                    user_id=event.obj.message['from_id'],
                    message=f"(×﹏×) Введи другую дату в формате YYYY-MM-DD",
                    random_id=random.randint(0, 2**64))
Esempio n. 7
0
def main():
    OWNER_ID = -int(GROUP_ID)

    user_vk_session = vk_api.VkApi(LOGIN, PASSWORD)
    try:
        user_vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
    user_vk = user_vk_session.get_api()

    group_vk_session = vk_api.VkApi(
        token=TOKEN)
    group_vk = group_vk_session.get_api()
    longpoll = VkBotLongPoll(group_vk_session, GROUP_ID)

    photos_ids = get_photos_ids(user_vk, OWNER_ID)

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            message = event.object.message
            from_id = message['from_id']
            user = user_vk.users.get(user_id=from_id)[0]
            print(f"{user['first_name']} {user['last_name']}: {message['text']}")

            answer = f"Привет, {user['first_name']}!"
            photo = get_random_url(OWNER_ID, photos_ids)
            random_id = random.randint(0, 2 ** 64)
            group_vk.messages.send(user_id=from_id,
                                   message=answer,
                                   random_id=random_id,
                                   attachment=photo)
Esempio n. 8
0
def main():

    vk_session = vk_api.VkApi(token=group_token)

    longpoll = VkBotLongPoll(vk_session, group_id)
    vk = vk_session.get_api()

    def check_myself():
        if event.obj.from_me and event.obj.random_id == get_last_rnd_int():
            send_message(
                vk, event,
                f'"Я на дебила похож, с самим собой разговаривать?", - {choose_random(chat_said_eugene)} Юджин.'
            )
            return False
        return True

    print(vk.messages.getConversationMembers(peer_id=2000000000 + 6))

    while True:
        try:
            for event in longpoll.listen():
                print(event)
                if event.type == VkBotEventType.MESSAGE_NEW:
                    if "парта сбор" in event.obj.text:
                        tag_all_users(
                            vk, event, parta_id
                        )  #hard_coded id ( change to make it for your conversation)
                    if event.obj.from_id == 129884708:
                        send_message(vk, event, 'Ахахахааххахахаха')

        except Exception as e:
            logger.error("type error: " + str(e))
            logger.error(traceback.format_exc())
Esempio n. 9
0
def server():
    bot_session = vk_api.VkApi(
        token=
        '9cda2485cc311a9de96a60797b9d4c35c3eea2be9cb2559244f69e11cdb7ccecebf399242b47d9f92f6ba'
    )
    vk = bot_session.get_api()

    while True:
        try:
            longpoll = VkBotLongPoll(bot_session, 187703257)
            db.msg('STARTED')
            for event in longpoll.listen():
                if event.type == VkBotEventType.MESSAGE_NEW:
                    if event.obj.message['from_id'] > 0:
                        if 'reply_message' in event.obj.message:
                            handler = Handler(
                                event.obj.message['peer_id'],
                                vk.users.get(
                                    user_ids=event.obj.message['from_id'],
                                    fields=['sex'])[0],
                                event.obj.message['reply_message'])
                            handler.drop(event.obj.message['text'])
                        else:
                            handler = Handler(
                                event.obj.message['peer_id'],
                                vk.users.get(
                                    user_ids=event.obj.message['from_id'],
                                    fields=['sex'])[0], False)
                            handler.drop(event.obj.message['text'])
        except Exception as e:
            db.msg(f'ERR: {e}')
Esempio n. 10
0
def main():
    # Инициализация бота
    vk_session = vk_api.VkApi(token=token)
    longpoll_session = VkBotLongPoll(vk_session, group_vk)
    vk = vk_session.get_api()

    # Прослушивание событий
    for event in longpoll_session.listen():
        # Из всех событий нас интересуют только новые сообщения
        if event.type == VkBotEventType.MESSAGE_NEW:
            if event.obj.from_id == 209832291:
                if event.obj.text == "stop":
                    exit(111)
                res = classifier.Messages.parse(event.obj.text)
                if res["is_to_bot"]:
                    if "schedule" in res["type"]:
                        mes, keyboard = data_controller.Schedule.response(res, event.obj.from_id)
                    elif "profile" in res["type"]:
                        mes, keyboard = data_controller.Profile.response(res, event.obj.from_id)
                    else:
                        pass
                else:
                    mes = texts.no_to_bot_mes()

                vk.messages.send(
                    peer_id=event.obj.from_id,
                    random_id=get_random_id(),
                    message=mes)
Esempio n. 11
0
def main():
    vk_session = vk_api.VkApi(
        token='d793c36d91cff1c0f93a216c5a95549a62788fe1cc65cee98728d74d41d90afd3e5a5cfbd789227b6c1e2')
    #токен к моему сообществу

    longpoll = VkBotLongPoll(vk_session, '193282244')

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            vk = vk_session.get_api()
            weekday = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
            date = datetime.datetime.now()
            if 'время' in event.obj.message['text'] or 'число' in event.obj.message['text'] or \
               'дата' in event.obj.message['text'] or 'день' in event.obj.message['text']:
                message = f"Сегодня {str(date).split()[0]}, {weekday[date.weekday()]}\n" \
                          f"Время {str(date).split()[1].split('.')[0]}"
                vk.messages.send(user_id=event.obj.message['from_id'],
                             message=message,
                             random_id=random.randint(0, 2 ** 64))
            else:
                message = 'Я умею говорить дату и время. ' \
                          'Для этого в твоем сообщении должны быть слова: ' \
                          '"время", "дата", "число" или "день" '
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=message,
                                 random_id=random.randint(0, 2 ** 64))
Esempio n. 12
0
File: Vk.py Progetto: plaxeen/linker
    def long_poll(self):
        tag = 'VK - Message LongPoll'
        from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

        long_poll_bot = VkBotLongPoll(
            self.vk_bot,
            int(self.config.read(self.settings_tag, "community_id")))

        for event in long_poll_bot.listen():
            try:
                if event.type == VkBotEventType.MESSAGE_NEW:
                    Log().info(
                        tag,
                        f'Новое сообщение от \"https://vk.com/id{event.obj.from_id}\".\n'
                        f'Текст сообщения:\t\n{event.obj.text}\n'
                        f'Прикрепленные аттачи:\t\n{event.obj.attachments}\n'
                        f'Пересланные сообщения:\t\n{event.obj.fwd_messages}')
                    self.listener(event)

                elif event.type == VkBotEventType.MESSAGE_REPLY:
                    Log().info(tag, f'Бот ответил в чате {event.obj.peer_id}.')

                else:
                    Log().info(
                        tag, f'Обнаружено новое действие: {event.type} от '
                        f'\"https://vk.com/id{event.obj.from_id}\"')

            except Exception as e:
                Log().error(tag, e)
Esempio n. 13
0
def main():
    vk_session = vk_api.VkApi(
        token='')
    longpoll = VkBotLongPoll(vk_session, '193846592')
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            vk = vk_session.get_api()
            ot = ''
            if 'покажи ответ на задачу' in str(event.obj.message).lower():
                otv = str(event.obj.message['text']).lower().split()
                if otv[-1] == 'физике':
                    ot = check_zad(otv, 'fiz')
                elif otv[-1] == 'математике':
                    ot = check_zad(otv, 'math')
                elif otv[-1] == 'информатике':
                    ot = check_zad(otv, 'inform')
                else:
                    ot = 'Вы где-то допустили ошибку , проверьте ещё раз'
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=f"{ot}",
                                 random_id=random.randint(0, 2 ** 64))
            elif 'помоги мне' ==  str(event.obj.message['text']).lower():
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=f"Я могу показывать ответ на задачу для этого нужно написать:"
                                         f"покажи ответ на задачу задача по предмет",
                                 random_id=random.randint(0, 2 ** 64))
Esempio n. 14
0
def main():
    vk_session = vk_api.VkApi(
        token='7216621803de07eafa776329fb518f1eeb5f5764fae3c32e24769bb3dd76d2817b50403d52a1dbf217f69')

    longpoll = VkBotLongPoll(vk_session, 193461113)
    user_id = None

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            text = event.obj.message['text'].lower()
            if text == 'привет' or text == 'здравствуйте':
                reply = 'И вам не хворать'
            elif text == 'тест':
                reply = 'хорош меня тестить!'
            else:
                reply = 'Сейчас отвечу, если не сплю'
            vk = vk_session.get_api()
            user_id = event.obj.message['from_id']

            vk.messages.send(user_id=user_id,
                             message=reply,
                             random_id=random.randint(0, 2 ** 64))
Esempio n. 15
0
def run_server(*args):
    """
    Точка начала работы бота, здесь находится прослушка от VKBotLongPoll.
    При получении сообщения оно попадает в обработчик handler_message.
    """

    import vk_api as api
    from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

    bot_session = api.VkApi(token=SETTINGS.token)
    botAPI = bot_session.get_api()
    longpoll = VkBotLongPoll(bot_session, SETTINGS.bot_chat_id)

    state_init, err_init = init_components()

    if not state_init:
        logging.warning(err_init)

    logging.info("------- Бот запущен / Bot is runing -------")
    try:
        for event in longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:
                handler_message(
                    event.
                    obj,  # Весь объект класса event (вся информация об полученном сообщении)
                    event.obj.
                    peer_id,  # Id чата откуда было получено сообщение
                    botAPI  # API для работы с действиями бота
                )
    except ConnectionError as err:
        logging.error("Произошел разрыв соединения с сервером.\n" + err)
Esempio n. 16
0
    def run(self):
        vk_session = vk_api.VkApi(token=Settings.VK_APP_KEY)
        vk = vk_session.get_api()
        longpoll = VkBotLongPoll(vk_session, Settings.VK_GROUP)
        vk = vk_session.get_api()
        event: VkBotMessageEvent
        for event in longpoll.listen():
            print(1)
            if event.type == VkBotEventType.MESSAGE_NEW and event.message:
                print(2)
                if event.from_chat:  # Если написали в Беседе
                    print(3)
                    if self.check_message(event.message['text']):
                        print(4)
                        vk.messages.send(  # ответ
                            chat_id=event.chat_id,
                            message='Передал 20ИМ',
                            random_id=get_random_id())

                        vk.messages.send(  # ответ
                            chat_id=Settings.VK_TO_GROUP_ID,
                            message="Сообщение от деканата!\n" +
                            event.message['text'],
                            random_id=get_random_id())
                        print(5)
Esempio n. 17
0
def main():
    vk_session = vk_api.VkApi(
        token=
        'd793c36d91cff1c0f93a216c5a95549a62788fe1cc65cee98728d74d41d90afd3e5a5cfbd789227b6c1e2'
    )
    #токен к моему сообществу
    longpoll = VkBotLongPoll(vk_session, '193282244')

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            vk = vk_session.get_api()
            name = vk.users.get(
                user_id=event.obj.message['from_id'])[0]['first_name']
            try:
                city = vk.users.get(user_id=event.obj.message['from_id'],
                                    fields=['city'])[0]['city']['title']
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=f"Привет, {name}!\n"
                                 f"Как поживает {city}?",
                                 random_id=random.randint(0, 2**64))
            except:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=f"Привет, {name}!",
                                 random_id=random.randint(0, 2**64))
Esempio n. 18
0
def main():
    vk_session = vk_api.VkApi(token=TOKEN)

    longpoll = VkBotLongPoll(vk_session, 195095163)

    for event in longpoll.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            vk = vk_session.get_api()
            user = get_user(event.obj.message['from_id'], vk)
            mes = f"Привет {user[0]}!"

            if 'Хочу узнать о' in event.obj.message[
                    'text'] or 'Что такое' in event.obj.message['text']:
                wikipedia.set_lang("ru")
                zapros = event.obj.message['text'].replace(
                    'Хочу узнать о', '').replace('Что такое', '')
                mes = wikipedia.summary(zapros, sentences=1)
            else:
                mes += "\nЧто хотите узнать?. Напишите 'Хочу узнать о...' или 'Что такое ...'"

            vk.messages.send(user_id=event.obj.message['from_id'],
                             message=mes,
                             random_id=random.randint(0, 2**64))
        else:
            print(event.type)
Esempio n. 19
0
class Bot:
    def __init__(self):
        vk_session = vk_api.VkApi(token=VK_TOKEN)
        self.vk = vk_session.get_api()
        self.longpoll = VkBotLongPoll(vk_session, group_id=GROUP_ID)
        self.plugins = []
        self.load_plugins()
        self.bot_logger = get_logger('Bot')

    def load_plugins(self):
        """This function initializes plugins."""
        ss = set(os.listdir('plugins'))
        sys.path.insert(0, 'plugins')

        for s in ss:
            if s != '__pycache__':
                __import__(os.path.splitext(s)[0], None, None, [''])
        for plugin in Plugin.__subclasses__():
            p = plugin()
            print('Added plugin', p)
            self.plugins.append(p)
            p.on_load()

    def loop(self):
        """Main process of the bot. """
        for event in self.longpoll.listen():
            print(event)
            for plugin in self.plugins:
                try:
                    if plugin.check(event, self.vk):
                        continue
                except Exception as e:
                    if enable_logging:
                        self.bot_logger.error(
                            f'{plugin} crushed with error {e}')
Esempio n. 20
0
def main():
    vk_session = vk_api.VkApi(token='token')
    print('Bot started!')

    vk = vk_session.get_api()
    group_id = int(id)

    longpoll = VkBotLongPoll(vk_session, str(group_id))
    upload = vk_api.VkUpload(vk_session)

    def listener(event, vk, vk_session, upload, longpoll, group_id):
        if event.type == VkBotEventType.MESSAGE_NEW and event.object.text.strip(
        ) != '':
            uid = event.obj.from_id
            text = event.obj.text
            messages(event, vk_session, vk, longpoll, upload, uid, text,
                     start_keyboard)
        if 'payload' in event.object:
            payload = event.object['payload']
            if payload[:8] == '{"key":"':
                uid = event.obj.from_id
                text = payload[8:][:-2]
                keyfunc(uid, text, vk, vk_session, event)

    for event in longpoll.listen():
        listen = Thread(target=listener,
                        name=str(random()),
                        args=(event, vk, vk_session, upload, longpoll,
                              group_id))
        listen.start()
Esempio n. 21
0
def first_group(group_id, token):
    engine = create_engine('sqlite:///chat_ids.sqlite', echo=False)
    data_base.init_db(engine)
    vk_session = vk_api.VkApi(token=token)
    longpoll = VkBotLongPoll(vk_session, group_id, wait=25)
    smi_tags = [
        "#АктивистЭМИТ", "#АнонсЭМИТ", "#ВнеЭМИТ", "#ЛичностьЭМИТ",
        "#НовостиЭМИТ", "#ПартнерыЭМИТ", "#ПослевкусиеЭМИТ", "#СтудСоветЭМИТ",
        "#УмныйЭМИТ", "#1337pacan"
    ]
    while True:
        try:
            for event in longpoll.listen():
                if event.type == VkBotEventType.MESSAGE_NEW:
                    session: Session
                    with data_base.session_scope() as session:
                        if session.query(data_base.ChatIds).get(
                                event.object['peer_id']) is None:
                            session.add(
                                data_base.ChatIds(event.object['peer_id']))
                            print(f'Новая беседа:{event.object["peer_id"]}')
                if event.type == VkBotEventType.WALL_POST_NEW:
                    if any(tags in event.object['text'] for tags in smi_tags):
                        mailing(event.object['owner_id'], event.object['id'])
        except Exception as pain:
            print(f"В первом процессе произошел: {pain}")
Esempio n. 22
0
    def daylik_competition(vk,keyboard):
            longpoll = VkBotLongPoll(vk, group_id)
            for event in longpoll.listen():
                if event.type == VkBotEventType.MESSAGE_NEW:
                    if event.object.message['attachments']:
                        if event.object.message['attachments'][0]['type'] == 'photo':  # photo
                            vk_message.method('messages.getConversations',
                                        {"peer_id": event.object.message['peer_id'],  # выведет ок если пришло фото
                                            'message': "",

                                            'random_id': 0})
                            url = event.object.message['attachments'][0]['photo']['sizes'][6]['url']
                            messages = vk_message.method("messages.getConversations",
                                                    {'offset': 0, 'count': 20, 'filter': 'unread'})
                            id = event.object.message['peer_id']  # id отправителя
                            body = event.object.message['text']  # сам текст
                            #album_Com_id = vk_photo.method('photos.createAlbum',# создает альбом для конкурсов
                            #                           {'title': str(day_t() + 1) + " День. Конкурсы, ", 'group_id': group_id})['id']
                            photo(body,id, url, group_id, album_challenge_id)
                            getpicture(event.object.message['peer_id'], 0, 2,apib,spreadsheetid)
                            vk_message.method('messages.send', {"peer_id": event.object.message['peer_id'],
                                                                'message': "Отлично, работа принята!",
                                                                'random_id': 0})
                        return event
                    if "Назад" in event.object.message['text']:
                        break
Esempio n. 23
0
    def run(self):
        log.info("Reading answer requests")
        while True:
            try:
                vk_session = vk_api.VkApi(token=token)
                longpoll = VkBotLongPoll(vk_session, '192336844')
                for event in longpoll.listen():
                    log.info("new event" + str(event.type))
                    if event.type == VkBotEventType.MESSAGE_NEW:
                        log.info('------------')
                        log.info('from ' + str(event.message.from_id))
                        log.info('text ' + str(event.message.text))
                        log.info('peer_id ' + str(event.message.peer_id))
                        log.info('------------')
                        peer_id = event.message.peer_id

                        answerRequest = re.search("[DT]\d\d?\.\d\d?",
                                                  event.message.text)
                        if answerRequest != None:
                            Thread(target=answerTheoremDefinition,
                                   args=(
                                       answerRequest.group(0),
                                       peer_id,
                                   )).start()

                        randomRequest = re.search(
                            "rand(.*D.*T|.*T.*D|.*T|.*D|)", event.message.text)
                        if randomRequest != None:
                            Thread(target=answerRand,
                                   args=(
                                       randomRequest.group(0),
                                       peer_id,
                                   )).start()
            except Exception as e:
                log.error("Answer error - " + str(e))
def main():
    vk_session = vk_api.VkApi(token=TOKEN)
    # токен к моему сообществу
    longpoll = VkBotLongPoll(vk_session, id)  # id сообщества
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            if 'время' in event.obj.message['text'] or \
                    'число' in event.obj.message['text'] or \
                    'дата' in event.obj.message['text'] or \
                    'день' in event.obj.message['text']:
                date_and_time = datetime.datetime.now(
                    pytz.timezone('Europe/Moscow'))
                date, time = str(date_and_time).split()[0], str(
                    date_and_time).split()[1].split('.')[0]
                weekday = DAYS[date_and_time.today().weekday()]
                vk = vk_session.get_api()
                vk.messages.send(
                    user_id=event.obj.message['from_id'],
                    message=
                    f"Сегодняшняя дата: {date}\nТекущее время (UTC+3): {time}\nДень недели: {weekday}",
                    random_id=random.randint(0, 2**64))
            else:
                vk = vk_session.get_api()
                vk.messages.send(
                    user_id=event.obj.message['from_id'],
                    message=
                    f"А я умею говорить, какой сегодня день недели и не только!\n"
                    f"Твое сообщение должно содежать слово 'время', или 'дата', или 'день', или 'число'",
                    random_id=random.randint(0, 2**64))
Esempio n. 25
0
def main():
    vk_session = vk_api.VkApi(
        token=TOKEN)

    longpoll = VkBotLongPoll(vk_session, 193460958)
    message_count = 0
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            message_count += 1
            vk = vk_session.get_api()
            if message_count == 1:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message="Добро пожаловать в ЯндексБота \n Как дела?",
                                 random_id=random.randint(0, 2 ** 64))
            elif message_count == 2:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message="У меня тоже " + str(event.obj.message['text']) + "\n Что делаешь?",
                                 random_id=random.randint(0, 2 ** 64))
            elif message_count == 3:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message="Я тоже часто " + str(event.obj.message['text']),
                                 random_id=random.randint(0, 2 ** 64))
            else:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message="Я устал,давай отдохнём,это уже " + str(message_count) + " по счёту сообщение",
                                 random_id=random.randint(0, 2 ** 64))
Esempio n. 26
0
def main():
    privar = [
        "Ghbdtn",
        "Здарова",
        "хай",
        "привет",
        "дарова",
        "привет",
    ]
    bot_session = vk_api.VkApi(token=token)
    bot_api = bot_session.get_api()
    while True:
        longpoll = VkBotLongPoll(bot_session, g_id)
        try:
            for event in longpoll.listen():

                if event.type == VkBotEventType.MESSAGE_NEW:
                    if event.object.text in privar:
                        print(event.object.text)
                        bot_api.messages.send(random_id=random.getrandbits(32),
                                              peer_id=event.obj.peer_id,
                                              message=random.choice(privar))
                    if event.object.text.find(']') != -1:
                        if event.object.text[event.object.text.find(']') +
                                             2:] in privar:
                            print(event.object.text)
                            bot_api.messages.send(
                                random_id=random.getrandbits(32),
                                peer_id=event.obj.peer_id,
                                message=random.choice(privar))

        except requests.exceptions.ReadTimeout as timeout:
            continue
Esempio n. 27
0
    def launch(self):
        session = vk_api.VkApi(token=self.keys.public_token,
                               api_version='5.103')
        lp = VkBotLongPoll(session, self.keys.public_id)
        while self.is_active:
            try:
                for event in lp.listen():
                    if self.is_active == False:
                        return
                    if event.type == VkBotEventType.MESSAGE_NEW:
                        msg = event.object.message.get('text')
                        if not msg.startswith(
                            ('do', 'Do')) and not msg.startswith(
                                ('python', 'Python')):
                            continue
                        user = str(event.object.message.get('from_id'))
                        self.log('There is message ' + msg + ' from user ' +
                                 user)
                        if msg.startswith(('do', 'Do')):
                            command = msg[3:]
                            self.doer(command, user)
                        elif msg.startswith(('python', 'Python')):
                            command = msg[7:]
                            self.launch_python(command, user)

            except ReadTimeout:
                time.sleep(30)
            except ConnectionError:
                time.sleep(30)
            except Exception as e:
                self.sender.report("Exception in Helper!\n" + str(type(e)) +
                                   '\n' + str(e))
                self.log(str(type(e)) + '\n' + str(e))
Esempio n. 28
0
def main():
    login, password = LOGIN, PASSWORD
    vk_session = vk_api.VkApi(login, password)
    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return 1

    vk = vk_session.get_api()
    id_group = input("id_group input: ")
    response = vk.photos.get(album_id=input("id_album input heree: "),
                             group_id=id_group)
    photo_to_send = ''
    if response['items']:
        photo_to_send = random.choice(
            [f"photo{i['owner_id']}_{i['id']}" for i in response['items']])
    lp = VkBotLongPoll(vk_session, id_group)

    for event in lp.listen():
        vk = vk_session.get_api()

        if event.obj.message:
            name = vk.users.get(
                user_id=event.obj.message['from_id'])[0]['first_name']

            city = None
            try:
                city = vk.users.get(user_id=event.obj.message['from_id'],
                                    fields='city')[0]['city']['title']
            except Exception:
                pass
            vk.messages.send(peer_id=event.obj.message['from_id'],
                             message=f'Привет, {name}!',
                             attachment=photo_to_send)
Esempio n. 29
0
def main():
    long_poll = VkBotLongPoll(bot.vk, bot.group_id)
    print('VkBot started')
    for event in long_poll.listen():
        user = User.query.get(event.message.from_id)
        message = None
        keyboard = None
        if user is None:
            message = \
                f"Ваш профиль не зарегестрирован на сайте.\n" \
                f"Перейдите по ссылке чтобы зарегестрироваться: " \
                f"{url_for('auth.login')}"
        elif not user.notify:
            user.notify = True
            db.session.add(user)
            message = \
                "Уведомления включены.\n" \
                "Для отключения уведомлений напишите \"Отключить\""
        elif 'отключить' in event.message.text.lower():
            user.notify = False
            db.session.add(user)
            message = \
                "Уведомления отключены.\n" \
                "Для включения уведомлений напишите любое сообщение."
        db.session.commit()
        if message is not None:
            bot.send_message(peer_id=event.message.peer_id,
                             message=message,
                             keyboard=keyboard)
Esempio n. 30
0
def main():
    vk_session = vk_api.VkApi(token=TOKEN)

    longpoll = VkBotLongPoll(vk_session, 195095163)

    for event in longpoll.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print('Новое сообщение:')
            print('Для меня от:', event.obj.message['from_id'])
            print('Текст:', event.obj.message['text'])
            vk = vk_session.get_api()

            try:
                dt = parser.parse(event.obj.message['text'])
                mes = dt.strftime("%A")
            except:
                mes = 'Напишите дату - я скажу день недели'

            vk.messages.send(user_id=event.obj.message['from_id'],
                             message=mes,
                             random_id=random.randint(0, 2**64))
        else:
            print(event.type)
Esempio n. 31
0
def main():
    """ Пример использования bots longpoll

        https://vk.com/dev/bots_longpoll
    """

    vk_session = vk_api.VkApi(token='your_group_token')

    longpoll = VkBotLongPoll(vk_session, 'your_group_id')

    for event in longpoll.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            print('Новое сообщение:')

            print('Для меня от: ', end='')

            print(event.obj.from_id)

            print('Текст:', event.obj.text)
            print()

        elif event.type == VkBotEventType.MESSAGE_REPLY:
            print('Новое сообщение:')

            print('От меня для: ', end='')

            print(event.obj.peer_id)

            print('Текст:', event.obj.text)
            print()

        elif event.type == VkBotEventType.MESSAGE_TYPING_STATE:
            print('Печатает ', end='')

            print(event.obj.from_id, end=' ')

            print('для ', end='')

            print(event.obj.to_id)
            print()

        elif event.type == VkBotEventType.GROUP_JOIN:
            print(event.obj.user_id, end=' ')

            print('Вступил в группу!')
            print()

        elif event.type == VkBotEventType.GROUP_LEAVE:
            print(event.obj.user_id, end=' ')

            print('Покинул группу!')
            print()

        else:
            print(event.type)
            print()