Ejemplo n.º 1
0
async def on_message(message, attachments, env):
    idl = await get_or_none(Relations, user1=int(message.from_id))
    if not idl:
        return await env.reply("Отношения: У тебя парня/девушки нет.")

    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': '💑 обнять ещё раз',
            'payload': {
                'command': f'{env.eenv.prefix}отношения обнять'
            },
            'color': 'positive'
        }]
    })
    userinfo = await env.request('users.get',
                                 user_ids=f'{idl.user1}, {idl.user2}',
                                 fields="sex")
    userinfo = userinfo.response
    suptext = 'обнял свою тян' if userinfo[0][
        'sex'] == 2 else 'обняла своего куна'
    await env.reply(
        f"[id{userinfo[0]['id']}|{userinfo[0]['first_name']} {userinfo[0]['last_name']}] { suptext } [id{userinfo[1]['id']}|{userinfo[1]['first_name']} {userinfo[1]['last_name']}]",
        keyboard=kb.dump_keyboard(),
        attachment=await get_nekos_attach(env, random.choice(['hug',
                                                              'cuddle'])))
Ejemplo n.º 2
0
async def nekos(msg, attach, env):
    if not await priviligeshelper.getUserPriviliges(
            env, msg.from_id) & priviligeshelper.USER_VIP > 0:
        return await env.reply(
            "стоять! Вам нужен вип-статус, чтобы выполнять эту команду!")

    if not env.args or env.args[0] not in types:
        formatted = ', '.join(types)
        return await env.reply(f'Доступные аругменты:\n\n{formatted}')

    attach = await get_nekos_attach(env, env.args[0])
    if not attach:
        return await env.reply("Пикча потерялась не сервере, попробуй позже!")

    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': 'Ещё такую пикчу',
            'payload': {
                'command': f'{env.eenv.prefix}nekos {env.args[0]}'
            },
            'color': 'primary'
        }]
    })

    return await env.reply("Держи",
                           attachment=attach,
                           keyboard=kb.dump_keyboard())
Ejemplo n.º 3
0
async def slap(msg, att, env):
    idl = await get_or_none(Relations, user1=int(msg.from_id))
    if not idl:
        return await env.reply("Отношения: У тебя парня/девушки нет.")

    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': '💟 шлёпнуть ещё раз',
            'payload': {
                'command': f'{env.eenv.prefix}отношения шлёпнуть'
            },
            'color': 'positive'
        }]
    })

    userinfo = await env.request('users.get',
                                 user_ids=f'{idl.user1}, {idl.user2}',
                                 fields="sex")
    userinfo = userinfo.response
    suptext = 'шлёпнул свою тян по попе' if userinfo[0][
        'sex'] == 2 else 'шлёпнула по попе своего куна'
    await env.reply(
        f"[id{userinfo[0]['id']}|{userinfo[0]['first_name']} {userinfo[0]['last_name']}] { suptext } [id{userinfo[1]['id']}|{userinfo[1]['first_name']} {userinfo[1]['last_name']}]\n😜😜😜👋👋 👋🍑",
        keyboard=kb.dump_keyboard(),
        attachment=await get_nekos_attach(env, 'slap'))
Ejemplo n.º 4
0
async def get_keyboard(type, eenv):
    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': f'Ещё {type}',
            'payload': {
                'command': f'{eenv.prefix}{type}'
            },
            'color': 'primary'
        }]
    })
    return kb.dump_keyboard()
Ejemplo n.º 5
0
async def on_message(message, attachments, env):
    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': '💡 ещё совет',
            'payload': {
                'command': f'{env.eenv.prefix}совет'
            },
            'color': 'primary'
        }]
    })
    await env.reply(random.choice(advices), keyboard=kb.dump_keyboard())
    return "DONE"
Ejemplo n.º 6
0
async def on_message(message, attachments, env):
    usages = ["🔘Доступные команды:🔘\n", ">> Вип команды - !дкоманды <<\n"]

    page = 0
    if env['args'] and env['args'][0].isdigit():
        page = int(env['args'][0]) - 1

    for x in plugin.plugins:
        for x1 in x.commands:
            if 'cheat' in x1:
                continue
            usages.append(
                random.choice(emojis) + (" 🎫VIP🎫 " if 'vip' in x1 else " ") +
                env.eenv.prefix + x1['command'] + " - " + x1['desc'] + "\n")

    fusages = list(chunks(usages, 12))

    if page + 1 > len(fusages):
        return await env.reply("Этой страницы нет")

    kb = VKKeyboard()
    if len(fusages) == page + 1:
        kb.lazy_buttons({
            'inline':
            True,
            'buttons': [{
                'text': 'На первую страницу',
                'payload': {
                    'command': f'{env.eenv.prefix}команды 1'
                },
                'color': 'primary'
            }]
        })
    else:
        kb.lazy_buttons({
            'inline':
            True,
            'buttons': [{
                'text': '<',
                'payload': {
                    'command': f'{env.eenv.prefix}команды {page+1-1}'
                },
                'color': 'primary'
            }, {
                'text': '>',
                'payload': {
                    'command': f'{env.eenv.prefix}команды {page+1+1}'
                },
                'color': 'primary'
            }]
        })

    message = f"> Доступно {len(usages)} команд\n" \
              f"> Вкладка {page+1}/{len(fusages)}\n\n"
    message += ''.join(fusages[page])
    message += f"\nЧто-бы просмотреть следующую страницу напишите !команды <номер страницы>"

    return await env.reply(message, keyboard=kb.dump_keyboard())
Ejemplo n.º 7
0
async def game(message, attachments, env):
    if not env['args'] or not env['args'][0].isdigit():
        return await env.reply("На какую сумму хотите сыграть?")

    profile = await get_or_create_profile(message.from_id)
    rate = int(env['args'][0])
    if rate > profile.money:
        return await env.reply("Ставка не может превышать ваш баланс!")

    if rate < 2000:
        return await env.reply("Ставка должна быть минимум 2000$")

    keyboard = VKKeyboard()
    keyboard.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': '👉 Ещё раз 👈',
            'payload': {
                'command': f'{env.eenv.prefix}игра {rate}'
            },
            'color': 'positive'
        }]
    })
    m = random.randint(1, 100)
    if m < 75:
        profile.money -= rate
        await manager.update(profile)
        return await env.reply(f"Выпало число {m}, ваша ставка сгорела!",
                               keyboard=keyboard.dump_keyboard())

    if m > 75 and m <= 89:
        profile.money += rate * 2
        await manager.update(profile)
        return await env.reply(f"Выпло число {m}, ваша ставка удвоилась!",
                               keyboard=keyboard.dump_keyboard())

    if m >= 90 and m <= 99:
        profile.money += rate * 3
        await manager.update(profile)
        return await env.reply(f"Выпло число {m}, ваша ставка утроилась!",
                               keyboard=keyboard.dump_keyboard())

    if m == 100:
        profile.money += rate * 5
        await manager.update(profile)
        return await env.reply(
            "Выпало число 100, невероятно, но ваша ставка вырасла в 5 раз!",
            keyboard=keyboard.dump_keyboard())
Ejemplo n.º 8
0
async def on_message(message, attachments, env):
    if len(env['args']) < 1 or not env['args'][0].isdigit():
        return await env.reply(f'😈 ➣ Укажите ставку')

    profile = await get_or_create_profile(message.from_id)
    text = int(env['args'][0])
    if text > profile.money or text <= 0:
        return await env.reply(
            f'Ставка не может быть меньше 0 или равна 0'
            if text <= 0 else f'Ставка не может превышать баланс')

    keyboard = VKKeyboard()
    keyboard.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': '👉 Ещё раз 👈',
            'payload': {
                'command': f'{env.eenv.prefix}ловушка {text}'
            },
            'color': 'positive'
        }]
    })
    if random.randint(1, 100) > 80:
        win = text * 2
        profile.money += win
        a_some_rare = random.choice(['💶', '💍', '💎', '💰', '🎁', '⚽'])
        await manager.update(profile)
        return await env.reply(
            f'😈 ➣ Вы засунули руку в коробку...\n▪ ➣ Из нее вы достали -> [{a_some_rare}] \n💴 ➣ Вы выиграли:  {win}💰\n💰 ➣ Баланс: {profile.money}',
            keyboard=keyboard.dump_keyboard())
    else:
        win = text
        profile.money -= win
        somebad = random.choice(['ловушкой', 'мышеловкой', 'капканом'])
        await manager.update(profile)
        return await env.reply(
            f'👉 ➣ Вы засунули руку в коробку...\n💀 ➣ Неудача... Вы повредили руку -> [{somebad}] \n💴 ➣ Вы проиграли:  {win}💰\n💰 ➣ Баланс: {profile.money}',
            keyboard=keyboard.dump_keyboard())
Ejemplo n.º 9
0
async def on_message(message, attachments, env):
    usera = await get_or_none(PxUser, iduser=str(message.from_id))
    if usera:
        users = await manager.execute(PxUser.select().order_by(PxUser.xpcount.desc()).limit(1000).dicts())
        position = next((index for (index, d) in enumerate(users) if d["iduser"] == usera.iduser), None)
        if position == 0:
            position += 1
        elif position:
            pass
        else:
            position = "1000+"
        # all_users = PxUser.select().order_by(PxUser.xpcount.desc()).dicts()
        #       print(list(all_users.keys()))

        kb = VKKeyboard()
        kb.set_inline(True)
        kb.add_row()
        kb.edit_row(0).add_button("✨ Ваш профиль экономики", payload={'command': f'{env.eenv.prefix}профиль'}, color="primary")
        if env.eenv.is_multichat:
            kb.add_row()
            kb.edit_row(1).add_button("👥 Топ беседы", payload={'command': f'{env.eenv.prefix}rank беседы'}, color="primary")
        
        player_xp = usera.xpcount
        player_lvl = await xputils.getLevel(player_xp)
        next_lvl_reqs = int(await xputils.getRequiredScoreForLevel(player_lvl+1))
        remaining_xp = int(next_lvl_reqs-player_xp)

        if usera.rank != player_lvl:
            usera.rank = player_lvl

        df = f'👨Статистика для [id{int(usera.iduser)}|чертя]:\n\n'
        user_privs = await priviligeshelper.getUserPriviliges(env, usera.iduser)
        if user_privs & priviligeshelper.USER_ADMIN > 0:
            df += "⭐| Администратор ✳\n"
        elif user_privs & priviligeshelper.USER_MODERATOR > 0:
            df += "⭐| Модератор 🅾\n"
        elif user_privs & priviligeshelper.USER_VIP > 0:
            df += "⭐| Вип Ⓜ\n"
        else:
            df += "⭐| Юзер 🆖\n"
        df += f'📢| Уровень: {player_lvl}\n'
        if usera.rank > len(levelarr) - 1:
            df += f"🔑| Префикс: {usera.personal if usera.personal != '' else 'Установите свой префикс!'}\n"
        else:
            df += f"🔑| Звание: {levelarr[player_lvl]}\n"

        df += f'✉| Количество сообщений: {humanize(usera.messcount)}\n'
        df += f'⛏| Количество опыта: {humanize(player_xp)}/{humanize(next_lvl_reqs)}xp (осталось {humanize(remaining_xp)}xp)\n'
        df += f'💻| Позиция в топе: #{position}\n'
        await env.reply(df, keyboard=kb.dump_keyboard())
        await manager.update(usera)
        return "DONE"
    else:
        await manager.get_or_create(PxUser, iduser=str(message.from_id), xpcount=0, messcount=0, rank=0, personal="")
        return "DONE"
Ejemplo n.º 10
0
        data = await create_model(env)

    if int(env['args'][1]) >= 10_000_000_000 or int(env['args'][0]) >= 2000:
        return await env.reply("Слишком большая сумма!") if int(
            env['args'][1]) >= 10_000_000_000 else await env.reply(
                "Слишком много активаций!")

    code_name = generate_random_name()
    code = generate_random_name(10)
    data['data'][code] = dict(name=code_name,
                              summ=int(env['args'][1]),
                              active_limit=int(env['args'][0]),
                              creator=message.from_id,
                              activated=[])

    kb = VKKeyboard()
    kb.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': 'Написать промокод',
            'payload': {
                'command': f'{env.eenv.prefix}промокод ласткопи'
            },
            'color': 'positive'
        }]
    })

    await Logs.create_log(
        env, message.from_id, 0, 11,
        f"Создал чит-промокод на сумму {humanize(int(env['args'][1]))}$")
Ejemplo n.º 11
0
async def on_message(message, attachments, env):
    if not env['args']:
        return await env.reply(f'[Подсказка] !бин вверх/вниз ставка')

    if len(env['args']) < 2 or not env['args'][1].isdigit():
        return await env.reply(
            f'🔥 ➣ Вы не указали ставку\n [Подсказка] ➣ бин вверх/вниз ставка')

    if len(env['args']) < 1:
        return await env.reply(
            f'🔥 ➣ Вы не указали вверх/вниз\n [Подсказка] ➣ бин вверх/вниз ставка'
        )

    amount = int(env['args'][1])

    keyboard = VKKeyboard()
    keyboard.set_inline(True)
    keyboard.add_row()
    keyboard.edit_row(0).add_button(
        '🔺 Ещё раз вверх',
        payload={'command': f'{env.eenv.prefix}бин вверх {amount}'},
        color="positive")
    keyboard.add_row()
    keyboard.edit_row(1).add_button(
        '🔻 Ещё раз вниз',
        payload={'command': f'{env.eenv.prefix}бин вниз {amount}'},
        color="negative")

    profile = await get_or_create_profile(message.from_id)
    if amount > profile.money or amount < 1000:
        return await env.reply(f'Ставка не может быть меньше 1000 💰' if amount
                               < 1000 else f'Ставка не может превышать баланс')
    if amount > 10000000:
        return await env.reply("Ставка не может быть больше 10000000$")

    a = int(rd() * 10)
    if env['args'][0].lower() == 'вверх' and a < 3:
        bin = random.randint(15, 40)
        win = amount * 2
        profile.money += win
        await manager.update(profile)
        return await env.reply(f'''
                                    📊 ➣ Binary Option
                                    📈 ➣ Курс акции вырос на — {bin} %
                                    💳 ➣ Вы выиграли: {win}💰.
                                    💰 ➣ Ваш баланс: {profile.money}💰''',
                               keyboard=keyboard.dump_keyboard())

    elif env['args'][0].lower() == 'вниз' and a < 3:
        bin = random.randint(15, 40)
        win = amount * 2
        profile.money += win
        await manager.update(profile)
        return await env.reply(f'''
                                📊 ➣ Binary Option
                                📉 ➣ Курс акции упал на — {bin} %
                                💳 ➣ Вы выиграли: {win}💰.
                                💰 ➣ Ваш баланс: {profile.money}💰''',
                               keyboard=keyboard.dump_keyboard())
    else:
        bin = random.randint(15, 40)
        lose = int(amount)
        profile.money -= lose
        await manager.update(profile)
        return await env.reply(f'''
                                📊 ➣ Binary Option
                                📈 ➣ Курс акции { "упал" if env['args'][0].lower() == "вверх" else "вырос" } на — {bin} %
                                💳 ➣ Вы проиграли: {lose}💰.
                                💰 ➣ Ваш баланс: {profile.money}💰''',
                               keyboard=keyboard.dump_keyboard())
Ejemplo n.º 12
0
async def on_message(message, attachments, env):
    if not env['args'] or not env['args'][0].isdigit():
        return await env.reply("Что-то напутал")

    profile = await get_or_create_profile(message.from_id)
    amount = int(env['args'][0])
    keyboard = VKKeyboard()
    keyboard.lazy_buttons({
        'inline':
        True,
        'buttons': [{
            'text': 'Крутануть ещё раз',
            'payload': {
                'command': f'{env.eenv.prefix}казино {amount}'
            },
            'color': 'primary'
        }]
    })

    if amount == 777:
        return await env.reply("Ты слил бабло, вухахахахахах.",
                               attachment="video-99505016_456242816",
                               keyboard=keyboard.dump_keyboard())

    if amount < 100:
        return await env.reply("Сумма ставки должна быть равна хотябы 100$")

    if profile.money < int(amount):
        return await env.reply("Сумма превышает ваш баланс!")

    r1 = random.randint(0, 2)
    r2 = random.randint(0, 2)
    r3 = random.randint(0, 2)
    emodjis = ["🍌", "🍓", "🍒"]
    if not r1 == r2 == r3:
        profile.money -= int(amount)
        await manager.update(profile)
        await env.reply(
            f"🐉 Казино \"Анатолич, крути барабан\" 🐉\n"
            f"🎰 Вы потеряли: {int(amount)} руб.\n\n"
            f"🎲 Ваша комбинация: {emodjis[r1]} | {emodjis[r2]} | {emodjis[r3]}\n"
            f"💳 Ваш баланс: {profile.money} руб.",
            keyboard=keyboard.dump_keyboard())
    else:
        koef = 0
        if r1 == 0:
            profile.money += int(int(amount) * 1.5)
            koef = 1.5
        elif r1 == 1:
            profile.money += int(int(amount) * 2)
            koef = 2
        elif r1 == 2:
            profile.money += int(int(amount) * 2.5)
            koef = 2.5

        await env.reply(
            f"🐉| Казино \"Анатолич, крути барабан\" 🐉\n"
            f"🎰| Вы получили: {int(amount)*koef} руб.\n\n"
            f"🎲| Ваша комбинация: {emodjis[r1]} | {emodjis[r2]} | {emodjis[r3]}\n"
            f"💳| Ваш баланс: {profile.money} руб.",
            keyboard=keyboard.dump_keyboard())
        await manager.update(profile)
Ejemplo n.º 13
0
async def on_message(message, attachments, env):
    profile = await get_or_create_profile(message.from_id)
    if not env['args'] or len(env['args']) < 2:
        return await env.reply("Вы что-то напутали")

    if not env['args'][1].isdigit():
        return await env.reply("Ставка должна быть числовой")

    color = env['args'][0]
    if not color.lower() in ("r", "g", "b"):
        return await env.reply("Аргументы: [r|g|b] [ставка]")

    balance = profile.money

    rate = int(env['args'][1])
    color = color.lower()

    if rate < 1000:
        return await env.reply("Мин. ставка 1000$")

    if color == "r" and balance < rate * 2 or \
                            color == "b" and balance < rate * 2:
        return await env.reply(
            f"Подожди подожди полегче у тебя баланса меньше чем при умножении {rate} на 2 = {rate*2}$."
        )

    if color == "g" and balance < rate * 4:
        return await env.reply(
            f"Подожди подожди полегче у тебя баланса меньше чем при умножении {rate} на 4 = {rate*4}$."
        )

    if balance <= 0:
        return await env.reply("Не хватает денег!")

    keyboard = VKKeyboard()
    keyboard.set_inline(True)
    keyboard.add_row()
    keyboard.edit_row(0).add_button(
        'Таже сумма на 🔴',
        payload={'command': f'{env.eenv.prefix}double r {rate}'},
        color="negative")
    keyboard.add_row()
    keyboard.edit_row(1).add_button(
        'Таже сумма на ⚫',
        payload={'command': f'{env.eenv.prefix}double b {rate}'},
        color="primary")
    keyboard.add_row()
    keyboard.edit_row(2).add_button(
        'Таже сумма на ✅',
        payload={'command': f'{env.eenv.prefix}double g {rate}'},
        color="positive")

    rInt = random.randint(1, 11)

    if rInt == 1 and color == "r" or \
                            rInt == 3 and color == "r" or \
                            rInt == 5 and color == "r" or \
                            rInt == 7 and color == "r" or \
                            rInt == 10 and color == "r":

        profile.money += rate * 2
        await manager.update(profile)
        return await env.reply(
            f"🔴 Красный!\n🏆 Вы выиграли {rate*2}$.\n💰 Ваш баланс: {balance+rate*2}$.",
            keyboard=keyboard.dump_keyboard())
    elif rInt == 2 and color == "b" or \
                            rInt == 4 and color == "b" or \
                            rInt == 6 and color == "b" or \
                            rInt == 8 and color == "b" or \
                            rInt == 11 and color == "b":

        profile.money += rate * 2
        await manager.update(profile)
        return await env.reply(
            f"⚫ Черный!\n🏆 Вы выиграли {rate*2}$.\n💰 Ваш баланс: {balance+rate*2}$.",
            keyboard=keyboard.dump_keyboard())
    elif rInt == 9 and color == "g":
        profile.money += rate * 4
        await manager.update(profile)
        return await env.reply(
            f"✅ Зеленый!\n🏆 Вы выиграли {rate*4}$.\n💰 Ваш баланс: {balance+rate*4}$.",
            keyboard=keyboard.dump_keyboard())
    else:
        if rInt == 1 or rInt == 3 or rInt == 5 or rInt == 7 or rInt == 10:
            if profile.money - rate * 2 <= 0:
                profile.money = 0
                balance = 0
            else:
                profile.money -= rate * 2
                balance -= rate * 2
            await env.reply(
                f"🔴 Красный!\n😭 Вы проиграли {rate*2}$.\n💰 Ваш баланс: {balance}$.",
                keyboard=keyboard.dump_keyboard())
        elif rInt == 2 or rInt == 4 or rInt == 6 or rInt == 8 or rInt == 11:
            if profile.money - rate * 2 <= 0:
                profile.money = 0
                balance = 0
            else:
                profile.money -= rate * 2
                balance -= rate * 2
            await env.reply(
                f"⚫ Черный!\n😭 Вы проиграли {rate*2}$.\n💰 Ваш баланс: {balance}$.",
                keyboard=keyboard.dump_keyboard())
        elif rInt == 9:
            if profile.money - rate * 4 <= 0:
                profile.money = 0
                balance = 0
            else:
                profile.money -= rate * 4
                balance -= rate * 4
            await env.reply(
                f"✅ Зеленый!\n😭 Вы проиграли {rate*4}$.\n💰 Ваш баланс: {balance}$.",
                keyboard=keyboard.dump_keyboard())

        await manager.update(profile)
        return "DONE"
Ejemplo n.º 14
0
async def on_message(message, attachments, env):
    idl = await get_or_none(Relations, user1=int(message.from_id))
    if not env['args']:
        await env.reply(f"Аргументы:\n"
                        f"отношения принять - принять предложение.\n"
                        f"отношения отказать - отказаться от предложения.\n"
                        f"отношения инфа - инфа об твоих отношениях")
        return "GOON"

    if env['args'][0].lower() == "инфа":
        if not idl:
            return await env.reply("Отношения: У тебя парня/девушки нет.")

        relays = idl
        info = await env.request('users.get',
                                 user_ids=relays.user2,
                                 fields='sex')
        info = info.response

        user1, user2 = await get_or_none(
            PxUser,
            iduser=message.from_id), await get_or_none(PxUser,
                                                       iduser=relays.user2)
        if not user1:
            return env.reply(
                "[Отношения] пожалуйста введите !rank для просмотра этой команды!"
            )
        if not user2:
            return env.reply(
                "[Отношения] пожалуйста попросите своего партнёра прописать !rank, чтобы взглянуть на статистику отношений"
            )

        kb = VKKeyboard()
        kb.set_inline(True)
        if not env.eenv.is_multichat:
            kb.add_row()
            kb.edit_row(0).add_button(
                "Порвать отношения",
                payload={'command': f"{env.eenv.prefix}отношения порвать"},
                color="negative")

        xpuser1 = user1.xpcount
        xpuser2 = user2.xpcount
        allcount = int(xpuser1) + int(xpuser2)

        mxpuser1 = user1.messcount
        mxpuser2 = user2.messcount
        mess = int(mxpuser1) + int(mxpuser2)

        strdt = datetime.datetime.fromtimestamp(
            relays.datetime).strftime('%Y-%m-%d %H:%M:%S')

        if info[0]['sex'] == 1:
            return await env.reply(
                f"💞Твоя тян: [id{info[0]['id']}|{info[0]['first_name']} {info[0]['last_name']}]\n"
                f"💡Ваш общий опыт: {allcount}xp\n"
                f"📮Ваше общее количество сообщений: {mess}\n"
                f"📅Когда были зарегестрированы: {strdt}",
                keyboard=kb.dump_keyboard())
        elif info[0]['sex'] == 2:
            return await env.reply(
                f"💞Твой кун: [id{info[0]['id']}|{info[0]['first_name']} {info[0]['last_name']}]\n"
                f"💡Ваш общий опыт: {allcount}xp\n"
                f"📮Ваше общее количество сообщений: {mess}\n"
                f"📅Когда были зарегестрированы: {strdt}",
                keyboard=kb.dump_keyboard())

    if str(message.from_id) in relationtemp:
        if env['args'][0].lower() == "принять":
            await env.request(
                'messages.send',
                user_id=relationtemp[f'{str(message.from_id)}'],
                message=
                f"Отношения: [id{relationtemp[f'{str(message.from_id)}']}|Поздравляем], твоё предложение приняли."
            )
            await env.reply("Отношения: Поздравляем, теперь вы пара.")
            user_1 = relationtemp[f'{str(message.from_id)}']
            user_2 = message.from_id
            timestamp = int(datetime.datetime.now().timestamp())

            await peewee_async.create_object(Relations,
                                             user1=user_1,
                                             user2=user_2,
                                             datetime=timestamp)
            await peewee_async.create_object(Relations,
                                             user1=user_2,
                                             user2=user_1,
                                             datetime=timestamp)
            del (relationtemp[f'{str(message.from_id)}'])
        elif env['args'][0].lower() == "отказать":
            await env.reply(
                "Отношения: Спасибо, что написали, пойду сообщу эту грустную новость тому человеку, чьи чувства были разбиты."
            )
            await env.request(
                'messages.send',
                user_id=relationtemp[f'{str(message.from_id)}'],
                message=
                f"Отношения: [id{relationtemp[f'{str(message.from_id)}']}|К сожалению], тебе отказали."
            )
            del (relationtemp[f'{str(message.from_id)}'])
    else:
        pass

    return "DONE"
Ejemplo n.º 15
0
async def on_message(message, attachments, env):
    idl = await get_or_none(Relations, user1=int(message.from_id))

    if not env['args']:
        return await env.reply("Отношения: С кем встречаться та буишь?")

    usera = idl
    if not usera:
        usc = await parse_user_id(message, env)
        if usc:
            if await get_or_none(Relations, user1=usc[0]):
                return await env.reply("Отношения: Он/Она уже с кем-то.")

            sex = await env.request('users.get',
                                    user_ids=f'{usc[0]},{message.from_id}',
                                    fields='sex')
            sex = sex.response
            if usc[0] == message.from_id:
                return await env.reply(
                    "Отношения: А, как с самим собой встречаться чёт я хз.")

            kb = VKKeyboard()
            kb.set_inline(True)
            kb.add_row()
            kb.edit_row(0).add_button(
                "💝 Согласиться",
                payload={'command': f"{env.eenv.prefix}отношения принять"},
                color="positive")
            kb.add_row()
            kb.edit_row(1).add_button(
                "💘 Отказать",
                payload={'command': f"{env.eenv.prefix}отношения отказать"},
                color="negative")

            r = await env.request(
                'messages.send',
                keyboard=kb.dump_keyboard(),
                user_id=usc[0],
                message=
                f"Отношения: [id{usc[0]}|{sex[0]['first_name']}], тебе предложил(-а) встречаться [id{message.from_id}|{sex[1]['first_name']} {sex[1]['last_name']}]\nНапишите команду '!отношения принять' или '!отношения отказать', у вас 120 секунд"
            )
            if not r.error:
                await env.reply("Отношения: Ну я написал ждёмс 120 секунд")
            else:
                return await env.reply(
                    "Отношения: Личка не доступна\nЧеловек с которым вы хотите встречаться должен написать боту в лс vk.me/honkbot"
                )

            relationtemp[f'{str(usc[0])}'] = message.from_id
            await asyncio.sleep(120)
            if str(usc[0]) in relationtemp:
                await env.reply(
                    "Отношения: К сожалению прошло 120 секунд, а ответа не поступило."
                )
                await env.request('messages.send',
                                  user_id=env['args'],
                                  message=f"Отношения: Отмена.....")

                del (relationtemp[f'{str(usc[0])}'])
        else:
            return await env.reply(
                "Отношения: Вы должны были написать упоминание о человеке.")
    else:
        return await env.reply(
            "Отношения: А изменять не очень хорошо, я слышала.")
Ejemplo n.º 16
0
async def notificator(*args):
    while True:
        timedb2 = await get_or_none(DynamicSettings, key="LAST_AUTOPOST_TIME")
        if not timedb2:
            await manager.create_or_get(DynamicSettings,
                                        key="LAST_AUTOPOST_TIME",
                                        value=str(int(time.time())))
            timedb = int(time.time())
        else:
            timedb = int(timedb2.value)

        remaining_time = (timedb + 1800) - int(time.time())
        if remaining_time > 0:
            await asyncio.sleep(remaining_time)

        plugin.votes = {}
        plugin.positive_votes = 0
        plugin.cancel_votes = 0
        upload_photo = make_upload_photo(
            args[0]['kutana']['kutana'].controllers[0], chat_id)
        request = RawRequest(
            load_configuration("vk_token",
                               "configuration.json")).schedule_raw_request
        ruris_request = RawRequest(ruris_token).schedule_raw_request

        tag_splitted = random.choice(tags).split("|")
        tag = tag_splitted[0]
        person = tag_splitted[1]
        images = await parseImages(tag_splitted)

        plugin.hash = secrets.token_hex(16)

        attach_ids = []
        for link in images:
            attach = None
            async with aiohttp.ClientSession() as sess:
                async with sess.get(link) as resp:
                    attach = await upload_photo(io.BytesIO(await resp.read()))

            if attach:
                attach_ids.append(
                    f'{attach.type}{attach.owner_id}_{attach.id}')

        kb = VKKeyboard()
        x = 1
        buttons = []
        for _ in images:
            buttons.append({
                'text': f'{x}',
                'payload': {
                    'command':
                    f'!пикчуресхуюреснахуйловлайвлизэйшнблять {x} {plugin.hash}'
                },
                'color': 'positive'
            })
            x += 1

        buttons.append({
            'text': 'Отмена',
            'payload': {
                'command':
                f'!пикчуресхуюреснахуйловлайвлизэйшнблять cancel {plugin.hash}'
            },
            'color': 'negative'
        })
        kb.lazy_buttons({'one_time': False, 'buttons': buttons})
        text = f'''
    Привет, я тут захотела выложить пару фоточек, не поможешь мне выбрать какая подходит для паблика?

Обратите внимание!!!! Нужен именно персонаж/общий план:
{person}

На голосование есть 10 минут!
#{tag}@honkbot'''

        await request("messages.send",
                      peer_id=chat_id,
                      message=text,
                      attachment=','.join(attach_ids),
                      keyboard=kb.dump_keyboard())

        await asyncio.sleep(10 * 60)
        timedb2.value = str(int(time.time()))
        await manager.update(timedb2)

        plugin.over_cancel = False
        if plugin.positive_votes + plugin.cancel_votes < 2:
            plugin.votes = {}
            plugin.positive_votes = 0
            plugin.cancel_votes = 0
            plugin.hash = "-1-1-1-1-1-1-1-1-1-1--11-1-1-1-1-1-1-1-1"

            await request(
                "messages.send",
                peer_id=chat_id,
                message=
                "К сожалению не достаточно голосов, может тогда опубликуем что-нибудь через часик?",
                keyboard='{"buttons": []}')
            continue

        if plugin.cancel_votes > plugin.positive_votes:
            plugin.votes = {}
            plugin.positive_votes = 0
            plugin.cancel_votes = 0
            plugin.hash = "-1-1-1-1-1-1-1-1-1-1--11-1-1-1-1-1-1-1-1"
            await request(
                "messages.send",
                peer_id=chat_id,
                message=
                "Я походу выбрала не очень да? Может тогда опубликуем что-нибудь через часик?",
                keyboard='{"buttons": []}')
            continue

        results = {}
        for (_, v) in plugin.votes.items():
            if v not in results:
                results[v] = 1
                continue
            results[v] += 1
        final_results = [
            (k, results[k])
            for k in sorted(results, key=results.get, reverse=True)
        ]

        kb = VKKeyboard()
        kb.lazy_buttons({
            'one_time':
            False,
            'buttons': [{
                'text': 'ACHTUNG! WRONG PICTURE(nsfw and etc..)',
                'payload': {
                    'command':
                    f'!пикчуресхуюреснахуйловлайвлизэйшнблять отмени_пост {plugin.hash}'
                },
                'color': 'negative'
            }]
        })

        await request(
            "messages.send",
            peer_id=chat_id,
            message=
            f"Ура! Победила картинка №{final_results[0][0]} с {final_results[0][1]} голосами!",
            attachment=attach_ids[final_results[0][0] - 1],
            keyboard=kb.dump_keyboard())

        await asyncio.sleep(15)
        plugin.votes = {}
        plugin.positive_votes = 0
        plugin.cancel_votes = 0
        plugin.hash = "-1-1-1-1-1-1-1-1-1-1--11-1-1-1-1-1-1-1-1"
        if plugin.over_cancel:
            await request("messages.send",
                          peer_id=chat_id,
                          message="Админ сказал что пикча не оч, отменяемс",
                          keyboard='{"buttons": []}')
            continue

        params = {
            'group_id': group_id,
            'caption': f"Источник: {images[final_results[0][0]-1]}",
        }

        # Start uploading
        result = await ruris_request("photos.getWallUploadServer", **params)
        upload_url = result['upload_url']

        data = aiohttp.FormData()
        async with aiohttp.ClientSession() as sess:
            async with sess.get(images[final_results[0][0] - 1]) as resp:
                #lets convert image
                image = Image.open(io.BytesIO(await resp.read()))

                buffer = io.BytesIO()
                image.save(buffer, format="JPEG")
                buffer.seek(0)

                data.add_field("photo", buffer, filename="img.jpg")

        upload_result = None
        async with aiohttp.ClientSession() as sess:
            async with sess.post(upload_url, data=data) as resp:
                upload_result = json.loads(await resp.read())

                if "error" in upload_result:
                    await request(
                        "messages.send",
                        peer_id=chat_id,
                        message="Не удалось загрузить пикчу на сервера ВК!",
                        keyboard='{"buttons": []}')
                    continue

                params.update(upload_result)

        image_for_post = await ruris_request("photos.saveWallPhoto", **params)

        if len(image_for_post) < 1:
            await request("messages.send",
                          peer_id=chat_id,
                          message="Не удалось загрузить пикчу на сервера ВК!",
                          keyboard='{"buttons": []}')
            continue

        image_for_post = f"photo{image_for_post[0]['owner_id']}_{image_for_post[0]['id']}"

        await ruris_request("wall.post",
                            owner_id=f"-{group_id}",
                            message=f"{person} #{tag} #lovelive",
                            attachments=image_for_post,
                            from_group=1)
        await request("messages.send",
                      peer_id=chat_id,
                      message="Пост был опубликован!",
                      keyboard='{"buttons": []}')