Ejemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 5
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(
            "Отношения: А изменять не очень хорошо, я слышала.")