示例#1
0
async def lang_with_arg(event):
    if not event.pattern_match.group(1):
        return

    arg = event.pattern_match.group(1).lower()

    K = await is_user_admin(event.chat_id, event.from_id)
    if K is False:
        await event.reply("You don't have rights to set language here!")
        return

    if arg not in LANGS:
        await event.reply("I don't support this language yet!")
        return

    old = mongodb.lang.find_one({'chat_id': event.chat_id})
    if old:
        mongodb.notes.delete_one({'_id': old['_id']})

    mongodb.lang.insert_one({'chat_id': event.chat_id, 'lang': arg})
    redis.set('lang_cache_{}'.format(event.chat_id), arg)

    text = "Language changed to **{}**".format(arg)

    if 'translators' in LANGUAGES[arg]["language_info"]:
        text += "\n\n**Translators:**\n"
        for user in LANGUAGES[arg]["language_info"]['translators']:
            text += "• "
            text += await user_link(user)
            text += '\n'

    await event.reply(text)
示例#2
0
def update_handlers_cache(chat_id):
    filters = mongodb.filters.find({'chat_id': chat_id})
    lst = []
    for filter in filters:
        lst.append(filter['handler'])
    dump = ujson.dumps(lst)
    redis.set('filters_cache_{}'.format(chat_id), dump)
示例#3
0
文件: users.py 项目: WeebTime/Sophie
async def update_admin_cache(chat_id):
    admin_list = await bot.get_participants(
        int(chat_id), filter=ChannelParticipantsAdmins())
    admins = []
    for admin in admin_list:
        admins.append(admin.id)
    dump = ujson.dumps(admins)
    redis.set('admins_cache_{}'.format(chat_id), dump)
    redis.expire('admins_cache_{}'.format(chat_id), 3600)
示例#4
0
def get_chat_lang(chat_id):
    r = redis.get('lang_cache_{}'.format(chat_id))
    if r:
        return r
    else:
        db_lang = mongodb.lang.find_one({'chat_id': chat_id})
        if db_lang:
            # Rebuild lang cache
            redis.set('lang_cache_{}'.format(chat_id), db_lang['lang'])
            return db_lang['lang']
        user_lang = mongodb.user_list.find_one({'user_id': chat_id})
        if user_lang and user_lang['user_lang'] in LANGS:
            # Add telegram language in lang cache
            redis.set('lang_cache_{}'.format(chat_id), user_lang['user_lang'])
            return user_lang['user_lang']
        else:
            return 'en'
示例#5
0
async def event(event):
    user_id = event.original_update.user_id
    chat_id = re.search(r'connect_(.*)', str(event.data)).group(1)[:-1]
    chat_title = mongodb.chat_list.find_one({'chat_id': int(chat_id)})
    old = mongodb.connections.find_one({'user_id': user_id})
    mongodb.connections.delete_one({'_id': old['_id']})
    mongodb.connections.insert_one({
        'user_id': user_id,
        'chat_id': chat_id,
        'btn1': old['btn1'],
        'btn2': old['btn2'],
        'btn3': old['btn3'],
        'updated': old['updated']
    })
    redis.set('connection_cache_{}'.format(user_id), chat_id)
    await event.edit(get_string("connections", "connected", event.chat_id).format(
        chat_title['chat_title']))
示例#6
0
async def set_lang_callback(event):
    chat = event.chat_id
    K = await is_user_admin(chat, event.original_update.user_id)
    if K is False:
        await event.answer("You don't have rights to set language here!",
                           alert=True)
        return
    event_data = re.search(r'select_lang_(.*)', event.data.decode("utf-8"))
    lang = event_data.group(1)
    redis.set('lang_cache_{}'.format(chat), lang)
    old = mongodb.lang.find_one({'chat_id': chat})
    if old:
        mongodb.notes.delete_one({'_id': old['_id']})
    mongodb.lang.insert_one({'chat_id': chat, 'lang': lang})
    text = "Language changed to **{}**!".format(
        LANGUAGES[lang]["language_info"]["name"] + " " +
        LANGUAGES[lang]["language_info"]["flag"])
    if 'translators' in LANGUAGES[lang]["language_info"]:
        text += "\n\n**Translators:**\n"
        for user in LANGUAGES[lang]["language_info"]['translators']:
            text += "• "
            text += await user_link(user)
            text += '\n'
    await event.edit(text)
示例#7
0
async def connect_with_arg(event):
    user_id = event.from_id
    if not event.chat_id == user_id:
        chat = event.chat_id
        chat = mongodb.chat_list.find_one({'chat_id': int(chat)})
    else:
        if not event.pattern_match.group(1):
            return
        else:
            chat = event.message.raw_text.split(" ", 2)[1]
            if not chat[0] == '-':
                chat = mongodb.chat_list.find_one(
                    {'chat_nick': chat.replace("@", "")})
                if not chat:
                    await event.reply(
                        get_string("connections", "cant_find_chat_use_id",
                                   chat))
                    return
            else:
                chat = mongodb.chat_list.find_one({'chat_id': int(chat)})
                if not chat:
                    await event.reply(
                        get_string("connections", "cant_find_chat", chat))
                    return

    chat_id = chat['chat_id']
    chat_title = chat['chat_title']

    user_chats = mongodb.user_list.find_one({'user_id': user_id})
    if user_chats and 'chats' in user_chats:
        if chat_id not in user_chats['chats']:
            await event.reply(get_string("connections", "not_in_group", chat))
            return

    history = mongodb.connections.find_one({'user_id': user_id})
    if not history:
        mongodb.connections.insert_one({
            'user_id': user_id,
            'chat_id': chat_id,
            'btn1': chat_id,
            'btn2': None,
            'btn3': None,
            'btn4': None,
            'btn5': None,
            'updated': 3
        })
    else:
        btn1 = history['btn1']
        btn2 = history['btn2']
        btn3 = history['btn3']
        updated = history['updated']

        if history['updated'] == 1 and chat_id != history[
                'btn2'] and chat_id != history['btn3']:
            btn1 = chat_id
            updated = 2
        elif history['updated'] == 2 and chat_id != history[
                'btn1'] and chat_id != history['btn3']:
            btn2 = chat_id
            updated = 3
        elif history['updated'] >= 3 and chat_id != history[
                'btn2'] and chat_id != history['btn1']:
            btn3 = chat_id
            updated = 1

        mongodb.connections.delete_one({'_id': history['_id']})

        mongodb.connections.insert_one({
            'user_id': user_id,
            'chat_id': chat_id,
            'btn1': btn1,
            'btn2': btn2,
            'btn3': btn3,
            'updated': updated
        })

    redis.set('connection_cache_{}'.format(user_id), chat_id)

    text = get_string("connections", "connected", chat).format(chat_title)
    if event.chat_id == user_id:
        await event.reply(text)
    else:
        try:
            await tbot.send_message(user_id, text)
        except (errors.rpcerrorlist.UserIsBlockedError,
                errors.rpcerrorlist.PeerIdInvalidError):
            await event.reply(
                get_string("connections", "connected_pm_to_me",
                           chat).format(chat_title))
            return
        await event.reply(
            get_string("connections", "pm_connected", chat).format(chat_title))