예제 #1
0
파일: vk_bot.py 프로젝트: arseniypom/vk_bot
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=True)

    if response == 'доступные команды':
        return keyboard.get_empty_keyboard()
    elif response == 'хватит':
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #2
0
파일: main.py 프로젝트: gumobu/vk_bot
 def payload_determination(event):
     """
     Determines and processes payload of the message
     """
     payload = int(event.message.payload)
     if payload == 1:
         keyboard = VkKeyboard.get_empty_keyboard()
         Messages(peer_id=<AdminId>, message='Выход выполнен', keyboard=keyboard).send()
     if payload == 2:
         keyboard = VkKeyboard.get_empty_keyboard()
         text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text']
         Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"'
                                             f' успешно отправлено в беседу СПИДИНФО', keyboard=keyboard).send()
         Messages(session=vk_session, text=text, num=1).resend()
예제 #3
0
def create_keyboard_for_which_yrok(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'какой урок будет первым в...?':

        # Создание кнопок
        keyboard.add_button('Понедельник', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Вторник', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Среда', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Четверг', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Пятница', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'закрыть':
        print('закрываем клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #4
0
def create_keyboard(x):
    keyboard = VkKeyboard(one_time=False)

    if x == 'тест':
        keyboard = VkKeyboard(one_time=True)

        keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()  # Переход на вторую строку
        keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE)

        keyboard.add_line()
        keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY)


    elif x == 'смех':
        keyboard.add_button("хочу смешную картинку!", color=VkKeyboardColor.POSITIVE)

    elif x == 'король здесь':
        keyboard = VkKeyboard(one_time=True)
        keyboard.add_button('Король здесь', color=VkKeyboardColor.POSITIVE)

    elif x == 'закрыть':
        print('закрываем клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #5
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)
    if response == "/help" or response == "!начать" or response == "!старт" or response == "старт" or response == "начать" or response == "назад" or response == "/start" or response == "start" or response == "!start":
        keyboard.add_button('Купить', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Пруфы', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()

        keyboard.add_button('Отключить бота', color=VkKeyboardColor.NEGATIVE)
    elif response == 'купить':
        keyboard.add_button('100к', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('500к', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('1кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('5кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Другое', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'продать':
        keyboard.add_button('До 1кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('1кк-5кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('5кк-15кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('От 15кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'отключить бота':
        print('Отключаю')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #6
0
class Commands:
    def __init__(self, commands):
        self._commands = commands
        self._keyboard = VkKeyboard()

    def kb(self, params: list = None, one_time: bool = False):
        """
        Makes buttons that used by keyboard of vk_api
        """
        if not params:
            self._keyboard = VkKeyboard()
            return self._keyboard.get_empty_keyboard()
        self._keyboard = VkKeyboard(one_time=one_time)
        for param in params:
            if param is None:
                self._keyboard.add_line()
                continue
            btn = self.get(param, True)
            self._keyboard.add_button(btn[0], color=btn[1])
        return self._keyboard.get_keyboard()

    def get(self, command_name: str, make_button=False):
        """
         Gets command synonyms or getting corresponding button settings
        """
        command = self._commands.get(command_name, None)
        if not command:
            return []
        if make_button:
            return [command[0][0], command[1]]
        return [x.lower() for x in command[0]]
예제 #7
0
def main(): # Работа с сообщениями

    longpoll = VkBotLongPoll(vk, 169452609)

    for event in longpoll.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            print('Новое сообщение:')
            print('Для меня от: {}'.format(event.obj.from_id))
            print('Текст:', event.obj.text)
            if event.obj.text == "Шалом":
                print('Клавиатура появилась')
                start("Всем шалом!","Definetively Not Button",VkKeyboardColor.NEGATIVE)
            elif event.obj.text == "[club169452609|@something_tasty] Definetively Not Button":
                write_msg("Теперь я буду жить тут вечно")
                print("Сообщение вроде как отправилось :/")
            elif event.obj.text == "[club169452609|@something_tasty] Definetively Button":
                write_msg("Не, я лентяй :Р")
                print("Сообщение вроде как отправилось :/")
            elif event.obj.text == "Давай другую":
                print('Клавиатура появилась')
                start("А теперь тут я!","Definetively Button",VkKeyboardColor.POSITIVE)
            elif event.obj.text == "Сворачиваемся":
                keyboard = VkKeyboard(one_time=False)
                vk.method('messages.send',
                          {'chat_id': 1,
                           'message': "Ладно, мы пойдем уже",
                           'keyboard': keyboard.get_empty_keyboard()
                           })

        else:
            print(event.type)
            print()
예제 #8
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'меню' or response == 'начать' or response == 'назад' or response == 'ютуб анал' or response == 'донат или реклама' or (
            'разраб' in response
            and response != 'разраб') or ('ютубер' in response
                                          and response != 'ютубер'):

        keyboard.add_button('Мем', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Видос', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Ютуб канал', color=VkKeyboardColor.NEGATIVE)

        keyboard.add_line()
        keyboard.add_button('Связь с админами', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Донат или реклама', color=VkKeyboardColor.PRIMARY)

    elif response == 'связь с админами':
        keyboard.add_button('Ютубер', color=VkKeyboardColor.NEGATIVE)
        keyboard.add_button('Разраб', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('назад', color=VkKeyboardColor.DEFAULT)

    elif response == response == 'разраб' or response == 'ютубер':
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #9
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'сделать заказ':

        keyboard.add_button('1', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('2', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('3', color=VkKeyboardColor.POSITIVE)

        # keyboard.add_line()  # Переход на вторую строку
    elif response == 'начать':
        keyboard.add_button('Сделать заказ', color=VkKeyboardColor.POSITIVE)

    elif response == '1' or response == '2' or response == '3':
        keyboard.add_button('24ч', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('12ч', color=VkKeyboardColor.POSITIVE)

    elif response == '24ч' or response == '12ч':
        keyboard.add_button('Забивка нужна', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Забивка не нужна', color=VkKeyboardColor.NEGATIVE)

    elif response == 'забивка нужна' or response == 'забивка не нужна':
        keyboard.add_button('Угли нужны', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Угли не нужны', color=VkKeyboardColor.NEGATIVE)

    elif response == 'угли нужны' or response == 'угли не нужны':
        return keyboard.get_empty_keyboard()

    elif is_adress(eval("x{}['adress']".format(event.object['from_id']))):
        keyboard.add_button('Отправить заказ', color=VkKeyboardColor.POSITIVE)

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #10
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'тест':

        keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()  # Переход на вторую строку
        keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE)

        keyboard.add_line()
        keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY)


    elif response == 'привет':
        keyboard.add_button('Тест', color=VkKeyboardColor.POSITIVE)

    elif response == 'котики':
        keyboard.add_button('Котики!', color=VkKeyboardColor.POSITIVE)

    elif response == 'закрыть':
        print('закрываем клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #11
0
def create_keyboard(response):
    global status_buy
    keyboard = VkKeyboard(one_time=False)
    status_buy

    print(str(response == '/admin' or response == 'активировать закупку'))
    if response == "/help" or response == "!начать" or response == "!старт" or response == "старт" or response == "начать" or response == "назад" or response == "/start" or response == "start" or response == "!start" or response == "команды" or response == "!команды" or response == "/команды":
        keyboard.add_button('Купить', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Пруфы', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()

        keyboard.add_button('Отключить бота', color=VkKeyboardColor.NEGATIVE)

    elif response == 'купить':
        keyboard.add_button('100к', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('500к', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('1кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('5кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Другое', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'продать':
        keyboard.add_button('До 1кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('1кк-5кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('5кк-15кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('От 15кк', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == '/admin' and not status_buy and (event.user_id==269593957 or event.user_id==299405534  or event.user_id==150297123):
        keyboard.add_button('Активировать закупку', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)
    elif response == '/admin' and status_buy and (event.user_id==269593957 or event.user_id==299405534  or event.user_id==150297123):
        keyboard.add_button('Дезактивировать закупку', color=VkKeyboardColor.NEGATIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif (response == '/admin' or response == 'дезактивировать закупку') and status_buy and (event.user_id==269593957 or event.user_id==299405534  or event.user_id==150297123):
        if response == 'дезактивировать закупку':
            status_buy = False
        keyboard.add_button('Активировать закупку', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)
    elif (response == '/admin' or response == 'активировать закупку') and not status_buy and (event.user_id==269593957 or event.user_id==299405534  or event.user_id==150297123):
        if response == 'активировать закупку':
            status_buy = True
        keyboard.add_button('Дезактивировать закупку', color=VkKeyboardColor.NEGATIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'отключить бота':
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #12
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'начать':
        'начать'.replace('н', 'Н')

        keyboard.add_button('Оплата и доставка', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Выбрать размер', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()  # Переход на вторую строку

        keyboard.add_button('Оформить заказ', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Помощь', color=VkKeyboardColor.PRIMARY)

    elif response == 'привет':
        keyboard.add_button('Тест', color=VkKeyboardColor.POSITIVE)

    elif response == 'котики':
        keyboard.add_button('Котики!', color=VkKeyboardColor.POSITIVE)

    elif response == 'закрыть':
        print('закрываем клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #13
0
 def __init__(self, text, user_id, attachment='', keyboard=None):
     self.text = text
     self.user_id = user_id
     self.attachment = attachment
     self.random_id = random.getrandbits(64)
     if keyboard:
         self.keyboard = keyboard
     else:
         self.keyboard = VkKeyboard.get_empty_keyboard()
def main():
    vk_session = vk_api.VkApi(
        token='token',  # Вынесено в .gitignore
        api_version='5.90')

    vk = vk_session.get_api()

    keyboard = VkKeyboard(one_time=None)

    keyboard.add_button('Купить', color=VkKeyboardColor.DEFAULT)
    keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE)
    keyboard.add_line()
    keyboard.add_button('Получить скидку', color=VkKeyboardColor.PRIMARY)

    longpoll = VkLongPoll(vk_session)
    vk = vk_session.get_api()

    for event in longpoll.listen():

        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
            if event.text == 'Начать' and event.from_user:  # Если написали в ЛС
                vk.messages.send(  # Отправляем сообщениe
                    user_id=event.user_id,
                    random_id=get_random_id(),
                    message='Выбери интересующую категорию',
                    keyboard=keyboard.get_keyboard())

            if event.text == 'Купить' and event.from_user:  # Если написали в ЛС
                vk.messages.send(  # Отправляем сообщениe
                    user_id=event.user_id,
                    random_id=get_random_id(),
                    message=
                    'Здесь можно посмотреть товары по категориям: https://vk.com/market-73747588. Если тебя заинтересовал товар, то пришли его сюда, мы тебе ответим.                                                               Не нашёл нужного товара? Напиши нам об этом!',
                    keyboard=keyboard.get_keyboard())
            elif event.text == 'Продать' and event.from_user:
                vk.messages.send(  # Отправляем собщение
                    user_id=event.user_id,
                    random_id=get_random_id(),
                    message=
                    'Если надо продать вещь, заполни краткую анкету, и консультант свяжется с тобой в ближайшее время :) https://vk.com/app5708398_-73747588',
                    keyboard=keyboard.get_keyboard())
            elif event.text == 'Получить скидку' and event.from_user:
                vk.messages.send(  # Отправляем собщение
                    user_id=event.user_id,
                    random_id=get_random_id(),
                    message=
                    'Твой личный промокод, который даёт пожизненную скидку 5% на наши и так низкие цены: VK431Sk5.                        Всё, что нужно сделать - это приехать в любой из наших магазинов и продиктовать промокод менеджеру, чтобы получить приятную скидку 5%.',
                    keyboard=keyboard.get_keyboard())
            elif event.text == 'Убери кнопки' and event.from_user:
                vk.messages.send(user_id=event.user_id,
                                 random_id=get_random_id(),
                                 message='Окей',
                                 keyboard=keyboard.get_empty_keyboard())
예제 #15
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time = False)
    if str(response) == 'клавиатура':
        keyboard.add_button('пн', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('вт', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('ср', color=VkKeyboardColor.DEFAULT)
        keyboard.add_line()
        keyboard.add_button('чт', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('пт', color=VkKeyboardColor.DEFAULT)
    elif str(response) == 'закрыть':
        return keyboard.get_empty_keyboard()
    
    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #16
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'тест':
        keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE)
        keyboard.add_line()
        keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY)
    elif response == 'закрыть':
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #17
0
    def generate_keyboard(self, buttons, inline=False, one_time=False):
        """
			Structure buttons:
			[
				[Button, Button],
				[Button, Button, Button],
				[Button]
				...
			]
			function return VkKeyboard
		"""
        if not buttons:
            return VkKeyboard.get_empty_keyboard()
        keyboard = VkKeyboard(inline=inline, one_time=one_time)
        for i in range(len(buttons)):
            for button in buttons[i]:
                keyboard.add_button(label=button.name, color=button.color)
            if i < len(buttons) - 1:
                keyboard.add_line()
        return keyboard.get_keyboard()
예제 #18
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'клава':

        keyboard.add_button('нажимай, чтобы управлять',
                            color=VkKeyboardColor.NEGATIVE)

    elif response == 'нажимай, чтобы управлять':
        keyboard.add_button('Одежда', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Меню', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Секс', color=VkKeyboardColor.NEGATIVE)

    elif response == 'закрыть':
        print('закрываю клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #19
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'команды':
        keyboard.add_button('Привет', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Как дела?', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('Шутка', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()
        keyboard.add_button('ААААА', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Тест', color=VkKeyboardColor.PRIMARY)

    elif response == 'как дела?':
        keyboard.add_button('Команды', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY)

    elif response == 'шутка':
        keyboard.add_button('Шутка', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Добавить шутку', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY)

    elif response == 'тест':
        keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY)

    elif response == 'привет':
        keyboard.add_button('Как дела?', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY)

    elif response == 'ааааа':
        keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY)

    elif response == 'закрыть':
        print('закрываем клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'клава':

        keyboard.add_button('Нажми, чтобы управлять ',
                            color=VkKeyboardColor.NEGATIVE)

    elif response == 'одежда':
        keyboard.add_button('Одежда', color=VkKeyboardColor.POSITIVE)

    elif response == 'меню':
        keyboard.add_button('Меню', color=VkKeyboardColor.POSITIVE)

    elif response == 'секс':
        keyboard.add_button('Тут будет секс', color=VkKeyboardColor.POSITIVE)

    elif response == 'закрыть':
        print('закрываю клаву')
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #21
0
def Create_board(state=None):
    # keyboard = VkKeyboard(one_time=True, inline=True)
    chat = 'chat'
    keyboard = VkKeyboard(one_time=False)
    if state is None:
        return keyboard.get_empty_keyboard()

    if state == '/start':
        keyboard.add_button(config.get(chat).get(state).get('ability'),
                            color=VkKeyboardColor.PRIMARY,
                            payload="{\"button:\": \"/ability\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('ask_admin'),
                            color=VkKeyboardColor.PRIMARY,
                            payload="{\"button:\": \"/ask_admin\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('help_list'),
                            color=VkKeyboardColor.PRIMARY,
                            payload="{\"button:\": \"/help_list\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard

    elif state == '/ability':
        keyboard = VkKeyboard(one_time=True)
        keyboard.add_button(config.get(chat).get(state).get('search_photos'),
                            color=VkKeyboardColor.POSITIVE,
                            payload="{\"button:\": \"/search_photos\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('come_back'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/come_back\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard

    elif state == '/ask_admin':
        keyboard.add_button(config.get(chat).get(state).get('come_back'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/come_back\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard

    elif state == "/help_list":
        keyboard.add_button(
            config.get(chat).get(state).get('delete_user_data'),
            color=VkKeyboardColor.NEGATIVE,
            payload="{\"button:\": \"/delete_user_data\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('come_back'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/come_back\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard

    elif state == '/search_photos':
        # keyboard.add_button(config.get(chat).get(state).get('identify'), color=VkKeyboardColor.POSITIVE,
        #                     payload="{\"button:\": \"/identify\"}")
        # keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('get_photos'),
                            color=VkKeyboardColor.PRIMARY,
                            payload="{\"button:\": \"/get_photos\"}")
        keyboard.add_line()
        keyboard.add_button(
            config.get(chat).get(state).get('help_search_photos'),
            color=VkKeyboardColor.PRIMARY,
            payload="{\"button:\": \"/help_search_photos\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('come_back'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/come_back\"}")
        keyboard.add_button(config.get(chat).get(state).get('start'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/start\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard

    # elif state == "/ask_identify":
    #     keyboard = VkKeyboard(one_time=False, inline=True)
    #     keyboard.add_button(config.get(chat).get(state).get('yes'), color=VkKeyboardColor.PRIMARY,
    #                         payload="{\"button:\": \"/identify\"}")
    #     keyboard.add_button(config.get(chat).get(state).get('no'), color=VkKeyboardColor.PRIMARY,
    #                         payload="{\"button:\": \"/search_photos\"}")
    #     keyboard = keyboard.get_keyboard()
    #     return keyboard
    #
    # elif state == "/identify":
    #     keyboard = VkKeyboard(one_time=True)
    #     keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE,
    #                         payload="{\"button:\": \"/come_back\"}")
    #     keyboard.add_line()
    #     keyboard.add_button(config.get(chat).get(state).get('start'), color=VkKeyboardColor.NEGATIVE,
    #                         payload="{\"button:\": \"/start\"}")
    #     keyboard = keyboard.get_keyboard()
    #     return keyboard

    elif state == "/get_photos":
        keyboard.add_button(config.get(chat).get(state).get('come_back'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/come_back\"}")
        keyboard.add_line()
        keyboard.add_button(config.get(chat).get(state).get('start'),
                            color=VkKeyboardColor.NEGATIVE,
                            payload="{\"button:\": \"/start\"}")
        keyboard = keyboard.get_keyboard()
        return keyboard
예제 #22
0
파일: main.py 프로젝트: gumobu/vk_bot
    def payload_determination(event):
        """
        Determines and processes payload of the message
        """
        payload = int(event.message.payload)
        if payload == 1:
            keyboard = VkKeyboard.get_empty_keyboard()
            Messages(peer_id=<AdminId>, message='Выход выполнен', keyboard=keyboard).send()
        if payload == 2:
            keyboard = VkKeyboard.get_empty_keyboard()
            text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text']
            Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"'
                                                f' успешно отправлено в беседу СПИДИНФО', keyboard=keyboard).send()
            Messages(session=vk_session, text=text, num=1).resend()
        if payload == 3:
            keyboard = VkKeyboard.get_empty_keyboard()
            text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text']
            Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"'
                                                f' успешно отправлено в беседу БАП1901', keyboard=keyboard).send()
            Messages(session=vk_session, text=text, num=2).resend()
        if payload == 4:
            keyboard = VkKeyboard.get_empty_keyboard()
            text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text']
            Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"'
                                                f' успешно отправлено в тестовую беседу', keyboard=keyboard).send()
            Messages(session=vk_session, text=text, num=0).resend()

    @staticmethod
    def response_determination(admin, response, event, keyboard):
        """
        Determines responses and processes incoming messages
예제 #23
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)
    if response == 'заявка':
        keyboard.add_button('Неоновая вывеска', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Объёмные буквы', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Вывеска-короб', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE)

    elif response == 'позвать администратора группы' or response == 'отправить заказ на почту':
        keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE)

    elif response == 'тест':

        keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE)

        keyboard.add_line()  # Переход на вторую строку
        keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE)

        keyboard.add_line()
        keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY)

    elif response == 'закрыть':
        return keyboard.get_empty_keyboard()

    elif response == 'хочу связаться с вами':

        keyboard.add_button('Написать на почту', color=VkKeyboardColor.PRIMARY)

        keyboard.add_line()
        keyboard.add_button('Позвать администратора группы',
                            color=VkKeyboardColor.PRIMARY)

    elif response == 'написать на почту':
        keyboard.add_button('Отправить', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE)

    elif response == 'хочу сделать заказ':
        keyboard.add_button('Каталог', color=VkKeyboardColor.PRIMARY)
        keyboard.add_line()
        keyboard.add_button('Заявка', color=VkKeyboardColor.PRIMARY)

    elif response == 'каталог':
        keyboard.add_button('Отправить заказ на почту',
                            color=VkKeyboardColor.PRIMARY)
        keyboard.add_line()
        keyboard.add_button('Вернуться', color=VkKeyboardColor.PRIMARY)

    else:

        keyboard.add_button('Хочу сделать заказ',
                            color=VkKeyboardColor.PRIMARY)

        keyboard.add_line()
        keyboard.add_button('Кто вы?', color=VkKeyboardColor.PRIMARY)
        keyboard.add_button('Хочу связаться с вами',
                            color=VkKeyboardColor.PRIMARY)

        keyboard.add_line()
        keyboard.add_button('Расскажи анекдот', color=VkKeyboardColor.PRIMARY)
    keyboard = keyboard.get_keyboard()

    return keyboard
예제 #24
0
def close_keys():
  keyboard = VkKeyboard(one_time = True)
  return keyboard.get_empty_keyboard()
예제 #25
0
파일: 12.py 프로젝트: nentu/hackaton
def create_empty_keyboard():
    keyboardd = VkKeyboard.get_empty_keyboard()
    return keyboardd
 def hide():
     return VkKeyboard.get_empty_keyboard()
예제 #27
0
def main_dialog():
    """Основной диалоговый цикл бота
    В бесконечном цикле передаются longpoll запросы от vk к программе

    :return: None
    """
    pair_flag = True
    day_flag = True
    week_flag = True
    while True:
        try:
            now = datetime.now()
            time = str(now.time())[:5]
            if time in RING_SCHEDULE and pair_flag:
                everyPairSub()
                pair_flag = False
            if time not in RING_SCHEDULE and not pair_flag:
                pair_flag = True
            if time == '21:00' and day_flag and now.weekday() != 6:
                everyDaySub()
                day_flag = False
            if time == '21:01' and not day_flag:
                day_flag = True
            if time == '21:00' and now.weekday() == 6 and week_flag:
                everyWeekSub()
                week_flag = False
            if time == '21:01' and not week_flag:
                day_flag = True
            for event in longpoll.check():
                if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
                    print('Someone text me.')
                    cur_student = False
                    if event.message.lower() == 'обама':
                        for st in Students:
                            sql.add_student(st)
                        print('обама')
                    # поиск в идентифицированных студентах
                    flag = StudentState.group_unchecked
                    for student in Students:
                        if str(event.user_id) == str(student.user_id):
                            cur_student = student
                            flag = StudentState.group_checked

                    # студент с найденной группой
                    if flag is StudentState.group_checked:
                        main_fork(event, cur_student)

                    # студент с ненайденной группой
                    elif flag is StudentState.group_unchecked:
                        group = event.message.upper()
                        file = check_group_in_group_file(group)
                        if file:
                            vk.messages.send(user_id=event.user_id,
                                             message='Я тебя запомнил',
                                             random_id=get_random_id(),
                                             keyboard=start.get_keyboard())
                            st = Student(group=group,
                                         user_id=str(event.user_id),
                                         file=file)
                            Students.append(st)
                            sql.add_student(st)
                        else:
                            vk.messages.send(
                                user_id=event.user_id,
                                message=
                                'Группа не найдена. Не забывайте тире и нули.',
                                random_id=get_random_id(),
                                keyboard=VkKeyboard.get_empty_keyboard())
        except Exception as e:
            print(e)
예제 #28
0
def main_fork(event, cur_student: Student):
    message = event.message.upper()
    if message in FEATURES:
        # Диалог с расписанием
        if message == 'ОБНОВИТЬ' and event.user_id == ADMIN_ID:
            vk.messages.send(user_id=event.user_id,
                             message='Обновление.',
                             random_id=get_random_id(),
                             keyboard=VkKeyboard.get_empty_keyboard())
            main.init()
            vk.messages.send(user_id=event.user_id,
                             message='Обновление завершено.',
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'СМЕНИТЬ НЕДЕЛЮ' and event.user_id == ADMIN_ID:
            cur_student.week_is_even = not cur_student.week_is_even
            vk.messages.send(user_id=event.user_id,
                             message='Неделя изменена.',
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'СМЕНИТЬ ГРУППУ':
            sql.rm_student(cur_student.user_id)
            vk.messages.send(user_id=event.user_id,
                             message='Введи новую группу.',
                             random_id=get_random_id(),
                             keyboard=start.get_empty_keyboard())
            del Students[Students.index(cur_student)]
        elif message == 'СЕГОДНЯ':
            today = datetime.now().weekday()
            if today == 6:
                today = 0
            vk.messages.send(user_id=event.user_id,
                             message=cur_student.reformat_day_schedule(
                                 cur_student.get_this_week_schedule(), today),
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'ЗАВТРА':
            today = datetime.now().weekday()
            if today >= 5:
                tomorrow = 0
            else:
                tomorrow = today + 1
            vk.messages.send(user_id=event.user_id,
                             message=cur_student.reformat_day_schedule(
                                 cur_student.get_this_week_schedule(),
                                 tomorrow),
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'КОМАНДЫ':
            vk.messages.send(user_id=event.user_id,
                             message='Список навыков:\n',
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'НЕДЕЛЯ':
            vk.messages.send(user_id=event.user_id,
                             message=cur_student.reformat_week_schedule(
                                 cur_student.get_this_week_schedule(), True),
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'ДЕНЬ НЕДЕЛИ':
            vk.messages.send(user_id=event.user_id,
                             message='Выберите день недели.',
                             random_id=get_random_id(),
                             keyboard=weekdays.get_keyboard())
        elif message == 'ПОДПИСКИ':
            sub = VkKeyboard(one_time=False, inline=False)
            if cur_student.everyDaySub:
                sub.add_button('ежедневно', color=VkKeyboardColor.NEGATIVE)
            else:
                sub.add_button('ежедневно', color=VkKeyboardColor.POSITIVE)
            sub.add_line()

            if cur_student.everyPairSub:
                sub.add_button('ежепарно', color=VkKeyboardColor.NEGATIVE)
            else:
                sub.add_button('ежепарно', color=VkKeyboardColor.POSITIVE)
            sub.add_line()

            if cur_student.everyWeekSub:
                sub.add_button('еженедельно', color=VkKeyboardColor.NEGATIVE)
            else:
                sub.add_button('еженедельно', color=VkKeyboardColor.POSITIVE)
            vk.messages.send(
                user_id=event.user_id,
                message='Кликайте на кнопки для управления подписками\n'
                '🍎 - выключить подписку\n'
                '🍏 - подключить подписку',
                random_id=get_random_id(),
                keyboard=sub.get_keyboard())
        elif message == 'ЕЖЕНЕДЕЛЬНО':
            cur_student.everyWeekSub = not cur_student.everyWeekSub
            mess = 'Еженедельная подписка подключена' if cur_student.everyWeekSub else 'Еженедельная подписка отключена'
            vk.messages.send(user_id=event.user_id,
                             message=mess,
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'ЕЖЕДНЕВНО':
            cur_student.everyDaySub = not cur_student.everyDaySub
            mess = 'Ежедневная подписка подключена' if cur_student.everyDaySub else 'Ежедневная подписка отключена'
            vk.messages.send(user_id=event.user_id,
                             message=mess,
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message == 'ЕЖЕПАРНО':
            cur_student.everyPairSub = not cur_student.everyPairSub
            mess = 'Ежепарная подписка подключена' if cur_student.everyPairSub else 'Ежепарная подписка отключена'
            vk.messages.send(user_id=event.user_id,
                             message=mess,
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message in DAY_NUMBER:
            vk.messages.send(user_id=event.user_id,
                             message=cur_student.reformat_day_schedule(
                                 cur_student.get_this_week_schedule(),
                                 DAY_NUMBER[message]),
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
        elif message in SHORT_DAY_NUMBER:
            vk.messages.send(user_id=event.user_id,
                             message=cur_student.reformat_day_schedule(
                                 cur_student.get_this_week_schedule(),
                                 SHORT_DAY_NUMBER[message]),
                             random_id=get_random_id(),
                             keyboard=start.get_keyboard())
    else:
        vk.messages.send(user_id=event.user_id,
                         message='Такой команды нет.',
                         random_id=get_random_id(),
                         keyboard=start.get_keyboard())
예제 #29
0
def create_keyboard(response):
    keyboard = VkKeyboard(one_time=False)

    if response == 'начать':
        keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Старт', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE)

    elif response == 'привет':
        keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Старт', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE)

    elif response == 'старт':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'мем':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'предсказание':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'стикеры':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == '!шо поделать':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'ясновидящий':
        keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('!шо поделать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Стикер', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Ясновидящий', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE)

    elif response == 'назад':
        keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE)
        keyboard.add_button('Начать', color=VkKeyboardColor.POSITIVE)
        keyboard.add_line()
        keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE)

    elif response == 'закрыть':
        return keyboard.get_empty_keyboard()

    keyboard = keyboard.get_keyboard()
    return keyboard
예제 #30
0
def main():
    if os.environ.get('RELOAD_IMG'):
        # img dowloading
        print('-' * 30, 'downloading imgs', '-' * 30)
        get_imgs()
    # auth
    # vk_session = vk_api.VkApi(token=open('config/token.txt', 'r').read())
    vk_session = vk_api.VkApi(
        token=os.environ.get('VK_TOKEN',
                             open('config/token.txt', 'r').read()))
    server = VkBotLongPoll(vk_session, 183487105)

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

    print('-' * 30, 'bot started', '-' * 30)

    # main loop
    for event in server.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            id = event.object.from_id
            msg = event.obj.text
            if id in users.keys():
                txt, bnt, url = users[id].answer(msg, id)
            else:
                users[id] = Chat()
                txt, bnt, url = users[id].answer(msg, id)
            # keyboard
            keyboard = VkKeyboard(one_time=True)

            if bnt:
                for row in bnt[:-1]:
                    for button in row:
                        keyboard.add_button(
                            button['txt'], color=button['color']
                        )  # NEGATIVE VkKeyboardColor.DEFAULT
                    keyboard.add_line()

                for button in bnt[-1]:
                    keyboard.add_button(button['txt'], color=button['color'])
            if url:
                try:
                    photo = upload.photo_messages(photos='img/%s.jpg' % url)[0]
                except:
                    try:
                        photo = upload.photo_messages(photos='img/%s.png' %
                                                      url)[0]
                    except:
                        photo = upload.photo_messages(
                            photos='img/error.jpg')[0]
            vk.messages.send(
                random_id=get_random_id(),
                user_id=id,
                keyboard=keyboard.get_keyboard()
                if bnt else keyboard.get_empty_keyboard(),
                attachment='photo{}_{}'.format(photo['owner_id'], photo['id'])
                if url else None,
                message=txt)

            print('Username:'******'User msg:', msg)
            print('Bot msg:', txt, url)
            print('-' * 30)