예제 #1
0
파일: tagger.py 프로젝트: EruBot/Kai
def tagg_all_button(update, context):
    query = update.callback_query
    chat = update.effective_chat
    splitter = query.data.split("=")
    query_match = splitter[0]
    user_id = splitter[1]
    if query_match == "tagall_accept" and query.from_user.id == int(user_id):
        member = chat.get_member(int(user_id))
        chat_id = str(chat.id)[1:]
        REDIS.sadd(
            f"tagall2_{chat_id}",
            mention_html(member.user.id, member.user.first_name),
        )
        query.message.edit_text(
            "{} is accepted! to add yourself {}'s tag list.".format(
                mention_html(member.user.id, member.user.first_name),
                chat.title),
            parse_mode=ParseMode.HTML,
        )

    elif (query_match == "tagall_accept" or query_match == "tagall_dicline"
          and query.from_user.id != int(user_id)):
        context.bot.answer_callback_query(
            query.id, text="You're not the user being added in tag list!")
    elif query_match == "tagall_dicline":
        member = chat.get_member(int(user_id))
        query.message.edit_text(
            "{} is deslined! to add yourself {}'s tag list.".format(
                mention_html(member.user.id, member.user.first_name),
                chat.title),
            parse_mode=ParseMode.HTML,
        )
예제 #2
0
def no_longer_afk(update, context):
    user = update.effective_user
    message = update.effective_message

    if not user:  # ignore channels
        return

    if not is_user_afk(user.id):  # Check if user is afk or not
        return

    end_afk_time = get_readable_time(
        (time.time() - float(REDIS.get(f"afk_time_{user.id}")))
    )
    REDIS.delete(f"afk_time_{user.id}")
    res = end_afk(user.id)
    if res:
        if message.new_chat_members:  # dont say msg
            return
        firstname = update.effective_user.first_name
        try:
            afkback = message.reply_text(
                "{} is back online!\nYou were AFK for: {}".format(
                    firstname, end_afk_time
                )
            )
            sleep(10)
            afkback.delete()
        except BaseException:
            return
예제 #3
0
파일: tagger.py 프로젝트: EruBot/Kai
def untagall(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    chat_id = str(chat.id)[1:]
    tagall_list = list(REDIS.sunion(f"tagall2_{chat_id}"))
    for tag_user in tagall_list:
        REDIS.srem(f"tagall2_{chat_id}", tag_user)
    message.reply_text(
        "Successully removed all users from {}'s tag list.".format(chat.title))
예제 #4
0
파일: tagger.py 프로젝트: EruBot/Kai
def tagall(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    args = context.args
    query = " ".join(args)
    if not query:
        message.reply_text("Please give a reason why are you want to tag all!")
        return
    chat_id = str(chat.id)[1:]
    tagall = list(REDIS.sunion(f"tagall2_{chat_id}"))
    tagall.sort()
    tagall = ", ".join(tagall)

    if tagall:
        tagall_reason = query
        if message.reply_to_message:
            message.reply_to_message.reply_text(
                "{}"
                "\n\n<b>• Tagged Reason : </b>"
                "\n{}".format(tagall, tagall_reason),
                parse_mode=ParseMode.HTML,
            )
        else:
            message.reply_text(
                "{}"
                "\n\n<b>• Tagged Reason : </b>"
                "\n{}".format(tagall, tagall_reason),
                parse_mode=ParseMode.HTML,
            )
    else:
        message.reply_text("Tagall list is empty!")
예제 #5
0
파일: tagger.py 프로젝트: EruBot/Kai
def tagme(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    chat_id = str(chat.id)[1:]
    tagall_list = list(REDIS.sunion(f"tagall2_{chat_id}"))
    match_user = mention_html(user.id, user.first_name)
    if match_user in tagall_list:
        message.reply_text("You're Already Exist In {}'s Tag List!".format(
            chat.title))
        return
    REDIS.sadd(f"tagall2_{chat_id}", mention_html(user.id, user.first_name))
    message.reply_text(
        "{} has been successfully added in {}'s tag list.".format(
            mention_html(user.id, user.first_name), chat.title),
        parse_mode=ParseMode.HTML,
    )
예제 #6
0
파일: afk.py 프로젝트: EruBot/Kai
def afk(update, context):
    args = update.effective_message.text.split(None, 1)
    user = update.effective_user
    if not user:  # ignore channels
        return

    if user.id == 777000:
        return
    start_afk_time = time.time()
    reason = args[1] if len(args) >= 2 else "none"
    start_afk(update.effective_user.id, reason)
    REDIS.set(f"afk_time_{update.effective_user.id}", start_afk_time)
    fname = update.effective_user.first_name
    try:
        update.effective_message.reply_text("{} is now Away!".format(fname))
    except BadRequest:
        pass
예제 #7
0
파일: tagger.py 프로젝트: EruBot/Kai
def untagme(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    chat_id = str(chat.id)[1:]
    tagall_list = list(REDIS.sunion(f"tagall2_{chat_id}"))
    match_user = mention_html(user.id, user.first_name)
    if match_user not in tagall_list:
        message.reply_text(
            "You're already doesn't exist in {}'s tag list!".format(
                chat.title))
        return
    REDIS.srem(f"tagall2_{chat_id}", mention_html(user.id, user.first_name))
    message.reply_text(
        "{} has been removed from {}'s tag list.".format(
            mention_html(user.id, user.first_name), chat.title),
        parse_mode=ParseMode.HTML,
    )
예제 #8
0
파일: afk.py 프로젝트: EruBot/Kai
def __user_info__(user_id):
    is_afk = is_user_afk(user_id)
    text = ""
    if is_afk:
        since_afk = get_readable_time(
            (time.time() - float(REDIS.get(f"afk_time_{user_id}"))))
        text = "<i>This user is currently afk (away from keyboard).</i>"
        text += f"\n<i>Since: {since_afk}</i>"

    else:
        text = "<i>This user is currently isn't afk (away from keyboard).</i>"
    return text
예제 #9
0
def afk(update, context):
    args = update.effective_message.text.split(None, 1)
    user = update.effective_user
    if not user:  # ignore channels
        return

    if user.id in (777000, 1087968824):
        return

    start_afk_time = time.time()
    reason = args[1] if len(args) >= 2 else "none"
    start_afk(user.id, reason)
    msg = update.effective_message
    REDIS.set(f"afk_time_{user.id}", start_afk_time)
    fname = update.effective_user.first_name
    afkon = msg.reply_text("{} is now away!".format(fname))
    sleep(5)
    try:
        afkon.delete()
    except BadRequest:
        pass
예제 #10
0
파일: tagger.py 프로젝트: EruBot/Kai
def removetag(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    args = context.args
    user_id, reason = extract_user_and_text(message, args)
    if not user_id:
        message.reply_text("You don't seem to be referring to a user.")
        return
    try:
        member = chat.get_member(user_id)
    except BadRequest as excp:
        if excp.message == "User not found":
            message.reply_text("I can't seem to find this user")
            return
        raise
    if user_id == context.bot.id:
        message.reply_text("how I supposed to tag or untag myself")
        return
    chat_id = str(chat.id)[1:]
    tagall_list = list(REDIS.sunion(f"tagall2_{chat_id}"))
    match_user = mention_html(member.user.id, member.user.first_name)
    if match_user not in tagall_list:
        message.reply_text(
            "{} is doesn't exist in {}'s list!".format(
                mention_html(member.user.id, member.user.first_name),
                chat.title),
            parse_mode=ParseMode.HTML,
        )
        return
    member = chat.get_member(int(user_id))
    chat_id = str(chat.id)[1:]
    REDIS.srem(f"tagall2_{chat_id}",
               mention_html(member.user.id, member.user.first_name))
    message.reply_text(
        "{} is successfully removed from {}'s list.".format(
            mention_html(member.user.id, member.user.first_name), chat.title),
        parse_mode=ParseMode.HTML,
    )
예제 #11
0
파일: afk.py 프로젝트: EruBot/Kai
def check_afk(update, context, user_id, fst_name, userc_id):
    if is_user_afk(user_id):
        reason = afk_reason(user_id)
        since_afk = get_readable_time(
            (time.time() - float(REDIS.get(f"afk_time_{user_id}"))))
        if int(userc_id) == int(user_id):
            return
        if reason == "none":
            res = "{} is AFK!\nSince: {}".format(fst_name, since_afk)
        else:
            res = "{} is AFK! Says it's because of:\n{}\nSince: {}".format(
                fst_name, reason, since_afk)

        update.effective_message.reply_text(res)
예제 #12
0
파일: tagger.py 프로젝트: EruBot/Kai
def addtag(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    args = context.args
    user_id, reason = extract_user_and_text(message, args)
    if not user_id:
        message.reply_text("You don't seem to be referring to a user.")
        return
    try:
        member = chat.get_member(user_id)
    except BadRequest as excp:
        if excp.message == "User not found":
            message.reply_text("I can't seem to find this user")
            return
        raise
    if user_id == context.bot.id:
        message.reply_text("how I supposed to tag myself")
        return

    chat_id = str(chat.id)[1:]
    tagall_list = list(REDIS.sunion(f"tagall2_{chat_id}"))
    match_user = mention_html(member.user.id, member.user.first_name)
    if match_user in tagall_list:
        message.reply_text(
            "{} is already exist in {}'s tag list.".format(
                mention_html(member.user.id, member.user.first_name),
                chat.title),
            parse_mode=ParseMode.HTML,
        )
        return
    message.reply_text(
        "{} accept this, if you want to add yourself into {}'s tag list! or just simply decline this."
        .format(mention_html(member.user.id, member.user.first_name),
                chat.title),
        reply_markup=InlineKeyboardMarkup([[
            InlineKeyboardButton(text="Accept",
                                 callback_data=f"tagall_accept={user_id}"),
            InlineKeyboardButton(text="Decline",
                                 callback_data=f"tagall_dicline={user_id}"),
        ]]),
        parse_mode=ParseMode.HTML,
    )
예제 #13
0
파일: afk_db.py 프로젝트: Ryomen-Sukuna/Kai
def start_afk(userid, reason):
    REDIS.set(f"is_afk_{userid}", reason)
예제 #14
0
파일: afk_db.py 프로젝트: Ryomen-Sukuna/Kai
def is_user_afk(userid):
    rget = REDIS.get(f"is_afk_{userid}")
    return bool(rget)
예제 #15
0
파일: afk_db.py 프로젝트: Ryomen-Sukuna/Kai
def end_afk(userid):
    REDIS.delete(f"is_afk_{userid}")
    return True
예제 #16
0
파일: afk_db.py 프로젝트: Ryomen-Sukuna/Kai
def afk_reason(userid):
    return strb(REDIS.get(f"is_afk_{userid}"))