コード例 #1
0
ファイル: handlers.py プロジェクト: Silva2122/silva2122
async def register_user(message: types.Message):
    chat_id = message.from_user.id
    referral = message.get_args()
    id = await db.add_new_user(referral=referral)
    count_users = await db.count_users()
    keyboard = ListOfButtons(
        text=["Стать предпринимателем 💼", "Пригласить члена партии 🗣", "Все о партии 🌍", "Общение ☎️", "Социальная иерархия СССР 🇲🇪"],
        align=[2, 2, 1]
    ).reply_keyboard
    text = "Добро пожаловать, коммунист!"
    if not id:
        id = await db.get_id()
    else:
        text += "Записал в базу! "

    bot_username = (await bot.me).username
    bot_link = f"https://t.me/{bot_username}?start={id}"
    balance = await db.check_balance()
    text += f"""

<b>Мы видим, что ты заблудился и находишься в поисках нужного пути для дальнейшего движения по просторам интернета.</b> 

Тебе однозначно повезло! Если ты читаешь данное послание, то уже мысленно вступил в партию Коммуналка СССР. 
Последний шаг за тобой. Действуй. Чего же ты ждёшь?
<b>Мы рады тебя приветствовать в нашей партии.</b>

"""

    await bot.send_message(chat_id, text, reply_markup=keyboard)
コード例 #2
0
ファイル: basis.py プロジェクト: Max-Zhenzhera/tg_note_bot
async def command_bug(message: types.Message):
    """ Handle bug report from user """
    bug_message = message.get_args()

    try:
        bug_message = BugValidator().validate_bug_message(bug_message)
    except ValidationError as error:
        await message.answer(get_formatted_error_message(error))
    else:
        user_id = message.from_user.id

        bug = Bug(message=bug_message, user_id=user_id)
        async with async_db_sessionmaker() as session:
            await db.add_bug(session, bug)

        logger.info(f'Added new bug from @{message.from_user.username}')

        text = md.text(
            '✅ The bug report has been accepted!',
            md.hbold('Thank you! You care not only for bot 🤖 but also for your convenience!'),
            sep='\n'
        )
        keyboard = LinksAndRubricsMainReplyKeyboard(one_time_keyboard=True)

        await message.answer_sticker(STICKER_KISSING_FROG)
        await message.answer(text, reply_markup=keyboard)
コード例 #3
0
async def welcome_security_handler_pm(message: Message,
                                      strings,
                                      regexp=None,
                                      state=None,
                                      **kwargs):
    args = message.get_args().split('_')
    chat_id = int(args[1])

    async with state.proxy() as data:
        data['chat_id'] = chat_id
        data['msg_id'] = int(args[3])
        data['to_delete'] = bool(int(args[4])) if len(args) > 4 else True

    db_item = await get_greetings_data(chat_id)

    level = db_item['welcome_security']['level']

    if level == 'button':
        await WelcomeSecurityState.button.set()
        await send_button(message, state)

    elif level == 'math':
        await WelcomeSecurityState.math.set()
        await send_btn_math(message, state)

    elif level == 'captcha':
        await WelcomeSecurityState.captcha.set()
        await send_captcha(message, state)
コード例 #4
0
ファイル: handlers.py プロジェクト: Silva2122/silva2122
async def btnl(message: types.Message):
    chat_id = message.from_user.id
    referral = message.get_args()
    id = await db.add_new_user(referral=referral)
    text = "Всем доброго дня!"
    if not id:
        id = await db.get_id()
    else:
        text += "Записал в базу! "

    bot_username = (await bot.me).username
    bot_link = f"https://t.me/{bot_username}?start={id}"
    text = ""
    text += f"""Пригласить члена партии 🗣

<b>Мы ценим ваши старания. Мы работаем над Собой и стараемся сделать Вас более независимым.</b> 

Увеличить материальные блага можно очень просто: за каждого приглашённого Вами нового члена партии будет выставлено вознаграждение, ввиде 5% от его первого пополнения. 

<b>Партийные выплаты осуществляются строго во вторник каждые две недели с 16:00-21:00.</b>

Ваша партийная ссылка: {bot_link}
При любых трудностях обращайтесь к главе партии: @GeneralStalinBot
  
<b>Проверить колличество рефералов можно по команде:</b> /communal
    """""
    await bot.send_message(chat_id, text)
コード例 #5
0
async def pair(session, membership_storage, message: types.Message):
    try:
        membership = await _parse_pair_args(session, message.get_args())
        await membership_storage.create_membership(membership)
    except (ValueError, ClientError) as e:
        return await message.answer(f"{str(e)}. Please see /help")
    await message.answer("Okay, paired")
コード例 #6
0
ファイル: greetings.py プロジェクト: iibrahimwt13/Display
async def welcome_security_handler_pm(message: Message,
                                      strings,
                                      regexp=None,
                                      state=None,
                                      **kwargs):
    args = message.get_args().split("_")
    chat_id = int(args[1])

    async with state.proxy() as data:
        data["chat_id"] = chat_id
        data["msg_id"] = int(args[3])
        data["to_delete"] = bool(int(args[4])) if len(args) > 4 else True

    db_item = await get_greetings_data(chat_id)

    level = db_item["welcome_security"]["level"]

    if level == "button":
        await WelcomeSecurityState.button.set()
        await send_button(message, state)

    elif level == "math":
        await WelcomeSecurityState.math.set()
        await send_btn_math(message, state)

    elif level == "captcha":
        await WelcomeSecurityState.captcha.set()
        await send_captcha(message, state)
コード例 #7
0
async def fix_url_server(message: types.Message):
    """ Убираем статус тревоги """
    if db.access_check_admin(str(message.from_user.id)):
        arguments = message.get_args()
        if str(arguments) == '':
            await message.reply('Введите url или server\n/fix vk.com [email protected]')
        else:
            arguments = arguments.split()
            await message.reply('Выключаем статусы тревоги...')
            await asyncio.sleep(1)
            for argument in arguments:
                if '@' in argument:
                    host = argument.split('@')[1]
                    if db.check_if_exist_server(host):
                        db.set_alarm_false_server(host)
                        await message.reply('Сервер {} - починен'.format(argument))
                    else:
                        await message.reply('Сервера {} нет в базе данных'.format(argument))
                else:
                    if db.check_if_exist_url(argument):
                        db.set_alarm_false_url(argument)
                        await message.reply('URL {} - починен'.format(argument), disable_web_page_preview=True)
                    else:
                        await message.reply('URL {} нет в базе данных'.format(argument), disable_web_page_preview=True)
    else:
        await message.reply('У вас не достаточно прав')
コード例 #8
0
ファイル: spinbot.py プロジェクト: urandon/spinner_telebot
async def log_level(message: types.Message):
    logging.getLogger().setLevel({
        'DEBUG': logging.DEBUG,
        'INFO': logging.INFO,
        'WARNING': logging.WARNING,
        'ERROR': logging.ERROR
    }.get(message.get_args().upper(), logging.INFO))
コード例 #9
0
async def cmd_reqaddword(message: types.Message) -> None:
    if message.forward_from:
        return

    words_to_add = [
        w for w in set(message.get_args().lower().split())
        if all(c in ascii_lowercase for c in w)
    ]
    if not words_to_add:
        await message.reply(
            "Function: Request addition of new words. Check @on9wcwa for new words.\n"
            "Please check the spelling of words before requesting so I can process your requests faster.\n"
            "Proper nouns are not accepted.\n"
            "Usage: `/reqaddword wordone wordtwo ...`")
        return

    existing = []
    rejected = []
    rejected_with_reason = []
    for w in words_to_add[:]:  # Iterate through a copy so removal of elements is possible
        if check_word_existence(w):
            existing.append("_" + w.capitalize() + "_")
            words_to_add.remove(w)

    async with pool.acquire() as conn:
        rej = await conn.fetch(
            "SELECT word, reason FROM wordlist WHERE NOT accepted;")
    for word, reason in rej:
        if word not in words_to_add:
            continue
        words_to_add.remove(word)
        word = "_" + word.capitalize() + "_"
        if reason:
            rejected_with_reason.append((word, reason))
        else:
            rejected.append(word)

    text = ""
    if words_to_add:
        text += f"Submitted {', '.join(['_' + w.capitalize() + '_' for w in words_to_add])} for approval.\n"
        await send_admin_group(
            message.from_user.get_mention(
                name=message.from_user.full_name +
                (" \u2b50\ufe0f"
                 if await has_star(message.from_user.id) else ""),
                as_html=True,
            ) + " is requesting the addition of " +
            ", ".join(["<i>" + w.capitalize() + "</i>"
                       for w in words_to_add]) +
            " to the word list. #reqaddword",
            parse_mode=types.ParseMode.HTML,
        )
    if existing:
        text += f"{', '.join(existing)} {'is' if len(existing) == 1 else 'are'} already in the word list.\n"
    if rejected:
        text += f"{', '.join(rejected)} {'was' if len(rejected) == 1 else 'were'} rejected.\n"
    for word, reason in rejected_with_reason:
        text += f"{word} was rejected due to {reason}.\n"
    await message.reply(text.rstrip())
コード例 #10
0
async def add_Admin(message: types.Message):
    if message.from_user.id not in admin0:
        await message.reply("Погоди, но ты же сам не из админов -_-")
    else:
        try:
            await notifyAdmin0(message.get_args())
        except Exception as e:
            await message.reply("Произошла ошибка(")
コード例 #11
0
async def remove_city(message: types.Message):
    name = message.get_args()
    if name and db.city_exists(name):
        db.remove_city(name)
        await message.answer(f'City {name} has been removed..')
        logger.info(f'City {name} has been removed..')
    else:
        await message.answer(f'City {name} does not exist')
コード例 #12
0
async def remove_user(message: types.Message):
    user_id = message.get_args()
    if user_id and db.user_exists(user_id):
        db.remove_user(user_id)
        await message.answer(f'User {user_id} has been removed..')
        logger.info(f'User {user_id} has been removed..')
    else:
        await message.answer(f'User {user_id} does not exist')
コード例 #13
0
 async def receipt_(message: Message, *, session):
     args = message.get_args().split()
     if len(args) > 0:
         if not (receipt_id := await receipt.search_receipt(
                 args[0],
                 session=session,
         )):
             return
コード例 #14
0
 def create_user(cls, msg: types.Message):
     if msg.from_user.id in clan_leader_list:
         cls.create_clan_leader(msg)
     elif msg.get_args():
         invited_id, clan_id = SecureLink.decode_link(msg.text)
         cls.create_ref_user(msg, invited_id, clan_id)
     else:
         cls.create_raw_user(msg)
コード例 #15
0
async def make_adduser_answer(message: types.Message, **kwargs):
    new_user = message.get_args().strip().strip("@")
    is_new = False
    if new_user:
        is_new = await handler.add_user(new_user)

    is_new = "yes" if is_new else "no"
    await message.answer(f"New user '{new_user}' (is new: {is_new})")
コード例 #16
0
ファイル: main.py プロジェクト: ereeenn/on9wordchainbot
async def cmd_killgame(message: types.Message) -> None:
    group_id = int(message.get_args() or message.chat.id)
    if group_id in GAMES:
        GAMES[group_id].state = GameState.KILLGAME
        await asyncio.sleep(2)
        if group_id in GAMES:
            del GAMES[group_id]
            await message.reply("Game ended forcibly.")
コード例 #17
0
async def cmd_start(message: types.Message, state: FSMContext):
    if db.is_banned(message.from_user.id):
        return

    user_exists = db.user_exists(message.from_user.id)
    if user_exists and permitted(message.from_user.id):
        await message.answer(hbold('Приветствую❗Рад, что Вы вернулись!🤗'),
                             parse_mode=ParseMode.HTML, reply_markup=home_keyboard())
        return

    if not user_exists and message.get_args():
        user_id = message.get_args()
        if db.user_exists(user_id):
            await state.update_data(inviter=user_id)

    await Profile.majority.set()
    await message.answer('Вам есть 18 лет?', reply_markup=confirm_age_majority_kb())
async def result_rust(message: types.Message):
    try:
        array: List[int] = list(map(int, message.get_args().split(" ")))
    except ValueError:
        await message.answer("send integer")
        return
    answer = librust_lib.rust_out(array)
    await message.answer(answer)
コード例 #19
0
ファイル: fmf_bot.py プロジェクト: Tayamarn/fmf_bot
async def match_command(message: types.Message):
    try:
        member_name, member_id = await handle_nickname(message)
    except NoNickname:
        return
    params = message.get_args().split()
    connection = get_db()
    await message.reply(matches_message(connection, member_id))
コード例 #20
0
async def getFile(message: types.Message):
    if message["from"]["id"] in admins:
        fileName = message.get_args()
        try:
            with open(fileName, 'rb') as f:
                await message.answer_document(f)
        except:
            await message.answer(fileName + " is not file! Or error!")
コード例 #21
0
ファイル: main.py プロジェクト: lightforce2017/EXCH_RATE_BOT
async def process_exc_command(message: types.Message, state: FSMContext):
    ms = '' #init ms for message
    
    if message.text == '/exchange':
        await message.reply('Input command with parameters, ex: \n/exchange 10 USD to CAD')
    else:
        arguments = message.get_args()
        args = arguments.split(' ')
        val = args[0]
        cur1 = cur2 = ''
        if val.find('$') > -1: 
            val = val[1:]
            cur1 = 'USD'
            cur2 = args[2].upper()      
        else:
            cur1 = args[1].upper()
            cur2 = args[3].upper()
        curr = CurList.split(',')
        v = 1.0
        if cur1 in CurList:
            if cur2 in CurList:
                try:
                    float(val)
                except ValueError:
                    ms = 'Invalid amount'
                    await message.reply(ms)
                else:
                    v = float(val)
                    now = datetime.now().timestamp()
                    async with state.proxy() as data:
                        if not islimit(data['rltime'], now): # 10 min is passed
                            await state.update_data(rltime = datetime.now().timestamp()) #renew timestamp
                            response = requests.get("http://api.exchangeratesapi.io/latest?base="+cur1)
                            ms = ''
                            if response.status_code == 200:
                                data['rl'] = response.json()['rates']
                                for i in data['rl']:
                                    if i == cur2:
                                        nval = float(data['rl'][i])*v
                                        ms += str(val)+ ' '+ cur1+' to '+cur2+' is {:.2f}'.format(nval)
                            else: 
                                ms = 'Data was not received'
                            await message.reply(ms)
                        else: # 10 min is not passed
                            if data['rl'] is not None:
                                for i in data['rl']:
                                    if i == cur2:
                                        nval = float(data['rl'][i])*v
                                        ms += str(val)+ ' '+ cur1+' to '+cur2+' is {:.2f}'.format(nval)
                            else:
                                ms = 'Data was not received. Try after several minutes'
                            await message.reply(ms)
            else:
                ms = 'Invalid value of the second currency or it is not in the list'
                await message.reply(ms)
        else:
            ms = 'Invalid value of the first currency or it is not in the list'
            await message.reply(ms)
コード例 #22
0
async def stats(message: types.Message):
    payload = message.get_args().split()

    base_log_msg = f"Admin {message.from_user.id} requested {payload} with result"

    subcommands = ["total", "file", "lang", "reqs"]

    if "total" in payload:
        total_users = User.select().where(User.is_ban == False).count()  # noqa: E712

        logger.info(f"{base_log_msg} {total_users}")

        await message.answer(total_users)

    elif "file" in payload:
        file = open(Path.cwd().joinpath("src/data/users.db"), "rb")
        input_file = types.InputFile(file)

        logger.info(f"{base_log_msg} <file>")

        await message.answer_document(input_file)

        file.close()

    elif "reqs" in payload:
        total_requests = User.select(fn.SUM(User.requests)).scalar(as_tuple=True)

        logger.info(f"{base_log_msg} {total_requests[0]}")

        await message.answer(total_requests[0])

    elif "lang" in payload:
        text = "Language Percentages:"
        top_list = []

        for lang in REPLIES["LANGS"]:
            total_users = (
                User.select().where(User.is_ban == False).count()  # noqa: E712
            )
            total_lang = User.select().where(User.language == lang).count()

            try:
                percent = total_lang / total_users
            except ZeroDivisionError:
                percent = 0.0

            top_list.append([lang, round(percent, 4)])

        for lang, per in sorted(top_list, key=lambda x: x[1], reverse=True):
            text += f"\n<pre>{lang}: {per:.2%}</pre>"

        logger.info(f"{base_log_msg} {top_list}")

        await message.answer(text=text, parse_mode="HTML")

    else:
        logger.info(f"{base_log_msg} no result.")
        await message.answer(subcommands)
コード例 #23
0
async def bot_start(message: types.Message, state: FSMContext):
    user = await db.get_user(message.from_user.id)

    if not user:
        bot_username = (await dp.bot.me).username
        if str(message.from_user.id) in ADMINS:
            admin = await db.verify_admin(message.from_user.id,
                                          message.from_user.full_name)

            await message.answer(
                f'Здравствуйте, новый Администратор {message.from_user.get_mention()}\n'
                f'Что бы открыть админ меню, пропишите /admin\n'
                f'Ваш реферальный код <pre>{admin.code}</pre>\n'
                f'Или ссылка t.me/{bot_username}?start={admin.code}')
            return

        code = message.text if not message.is_command() else message.get_args()

        if not code:
            await message.answer(
                'Чтобы использовать этого бота введите код приглашения, '
                'либо пройдите по реферальной ссылке')
            await state.set_state('wait_code')
            return

        referrer = await db.get_user_on_code(message.get_args())

        if referrer:
            referral = await db.add_referral_user(referrer,
                                                  message.from_user.id,
                                                  message.from_user.full_name)

            await message.answer(
                f'Вы были приглашены пользователем <b>{referrer.name}</b>\n'
                f'Вы можете получить бонус +10₽ если пригласите рефералов\n'
                f'Ваш реферальный код <pre>{referral.code}</pre>\n'
                f'Или ссылка t.me/{bot_username}?start={referral.code}',
                reply_markup=start_inline)
            return True
        else:
            await message.answer('Неверный код приглашения')
            return False

    await message.answer(f"Здравствуйте, {message.from_user.get_mention()}!\n"
                         f"Ваш баланс: {user.balance}")
コード例 #24
0
    async def inner(message: Message):
        if message.reply_to_message:
            text = message.reply_to_message.text
        else:
            text = message.get_args()

        if text:
            text = f(text)
            await message.reply(text)
コード例 #25
0
async def bot_start_deeplink(message: types.Message):
    deep_link_args = message.get_args()
    await message.answer(f"Привет, {message.from_user.full_name}!\n"
                         f"Вы находитесь в личной переписке. \n"
                         f"В вашей команде есть диплинк. \n"
                         f"Вы передали аргумент {deep_link_args}. \n")
    logger.info(
        f"User <{message.from_user.full_name}[{message.from_user.id}]> started with deeplink"
    )
コード例 #26
0
ファイル: main.py プロジェクト: constantintesla/goskustoge
async def echo(message: types.Message):
    arguments = message.get_args()
    print("попросили удалить гражаднина с ID:", arguments)
    s = arguments
    cur.execute("delete from barsa where id=:id", {"id": s})
    conn.commit()
    print("Гражданин с ID :", arguments, 'удален')
    res = "Гражданин с ID :", arguments, 'удален'
    await bot.send_message(message.from_user.id, res)
コード例 #27
0
ファイル: __main__.py プロジェクト: AncientCatz/aiogram-bot
async def give(message: types.Message):
    id = message.get_args()
    otp = otpCode()
    if str(message.chat.id) not in master :
        await message.answer('Sorry you\'re not my master, you\'re not allowed to use this command')
    else:
        await bot.send_message(
            id, '%s' % otp
        )
コード例 #28
0
ファイル: start.py プロジェクト: SunAdmirer/Auto-Shop-bot
async def bot_start_deeplink(message: types.Message, user: User):
    """Переход по реф. ссылке"""

    if user:
        await already_registered(message)
    else:
        deep_link_args = message.get_args()
        decoded_link = int(decode_payload(deep_link_args))
        await registration(message, decoded_link)
コード例 #29
0
async def akira_sc2a(
    message: types.Message
):  # Also f**k this thing too, inherits all horrible code from /yt2a
    args = message.get_args()
    if args:
        download_dir = tempfile.mkdtemp(dir=akira_dir)
        dargs = {
            "format": "bestaudio[filesize<?2000M]",
            "outtmpl": f"{download_dir}/audio-%(id)s.%(ext)s",
            "writethumbnail": True
        }
        reply = await message.reply("Downloading...")
        try:
            with YoutubeDL(dargs) as ydl:
                audio_info = ydl.extract_info(args, download=False)
                print(audio_info)
                audio_id = audio_info["id"]
                audio_ext = audio_info["ext"]
                if not sc2a_cache.get(audio_id):
                    ydl.download([args])
        except:
            await message.reply("Download error.")
            await reply.delete()
            shutil.rmtree(download_dir)
            return
        await reply.edit_text("Uploading...")
        chat = await client.get_entity(message.chat.id)
        try:
            if sc2a_cache.get(audio_id):
                await client.send_file(chat,
                                       sc2a_cache[audio_id],
                                       reply_to=message.message_id)
            else:
                audio_message = await client.send_file(
                    chat,
                    open(f"{download_dir}/audio-{audio_id}.{audio_ext}", "rb"),
                    thumb=open(f"{download_dir}/audio-{audio_id}.jpg", "rb"),
                    reply_to=message.message_id,
                    attributes=[
                        DocumentAttributeAudio(
                            title=audio_info["title"],
                            performer=audio_info["uploader"],
                            duration=int(
                                audio_info["duration"]
                            )  # Whoever coded Soundcloud extractor, f**k you. WHY IS IT F*****G FLOAT INSTEAD OF INT
                        )
                    ])
                sc2a_cache[audio_id] = audio_message.media
        except:
            await message.reply("Upload error.")
            await reply.delete()
            shutil.rmtree(download_dir)
            return
        await reply.delete()
        shutil.rmtree(download_dir)
    else:
        await message.reply("No arguments.")
コード例 #30
0
ファイル: admin.py プロジェクト: Prod-420/checkbox451_bot
 async def role(message: Message):
     user_id, role_name = message.get_args().split()
     session = db.Session()
     if user := session.query(db.User).get(user_id):
         auth.add_role(user, role_name, session=session)
         await message.answer(str(user))
         if (auth.has_role(user.user_id, auth.CASHIER)
                 and user.user_id != message.chat.id):
             await helpers.start(user.user_id)