Exemple #1
0
def add_fvrtsticker(update, context):
    bot = context.bot
    message = update.effective_message
    chat = update.effective_chat
    user = update.effective_user
    args = context.args
    query = " ".join(args)
    if message.reply_to_message and message.reply_to_message.sticker:
        get_s_name = message.reply_to_message.sticker.set_name
        if not query:
            get_s_name_title = get_s_name
        else:
            get_s_name_title = query
        if get_s_name is None:
            message.reply_text("Sticker is invalid!")
        sticker_url = f"https://t.me/addstickers/{get_s_name}"
        sticker_m = "<a href='{}'>{}</a>".format(sticker_url, get_s_name_title)
        check_pack = REDIS.hexists(f'fvrt_stickers2_{user.id}',
                                   get_s_name_title)
        if check_pack == False:
            REDIS.hset(f'fvrt_stickers2_{user.id}', get_s_name_title,
                       sticker_m)
            message.reply_text(
                f"<code>{sticker_m}</code> has been succesfully added into your favorite sticker packs list!",
                parse_mode=ParseMode.HTML)
        else:
            message.reply_text(
                f"<code>{sticker_m}</code> is already exist in your favorite sticker packs list!",
                parse_mode=ParseMode.HTML)

    else:
        message.reply_text('Reply to any sticker!')
Exemple #2
0
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
        else:
            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)
Exemple #3
0
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":
        if 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)

        else:
            context.bot.answer_callback_query(
                query.id, text="You're not the user being added in tag list!")
    elif query_match == "tagall_dicline":
        if query.from_user.id == int(user_id):
            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)
        else:
            context.bot.answer_callback_query(
                query.id, text="You're not the user being added in tag list!")
Exemple #4
0
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))
Exemple #5
0
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)
Exemple #6
0
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!")
Exemple #7
0
def animestuffs(update, context):
    query = update.callback_query
    user = update.effective_user
    splitter = query.data.split('=')
    query_match = splitter[0]
    callback_anime_data = splitter[1]
    if query_match == "xanime_watchlist":
        watchlist = list(REDIS.sunion(f'anime_watch_list{user.id}'))
        if not callback_anime_data in watchlist:
            REDIS.sadd(f'anime_watch_list{user.id}', callback_anime_data)
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is successfully added to your watch list.",
                show_alert=True)
        else:
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is already exists in your watch list!",
                show_alert=True)

    elif query_match == "xanime_fvrtchar":
        fvrt_char = list(REDIS.sunion(f'anime_fvrtchar{user.id}'))
        if not callback_anime_data in fvrt_char:
            REDIS.sadd(f'anime_fvrtchar{user.id}', callback_anime_data)
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is successfully added to your favorite character.",
                show_alert=True)
        else:
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is already exists in your favorite characters list!",
                show_alert=True)
    elif query_match == "xanime_manga":
        fvrt_char = list(REDIS.sunion(f'anime_mangaread{user.id}'))
        if not callback_anime_data in fvrt_char:
            REDIS.sadd(f'anime_mangaread{user.id}', callback_anime_data)
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is successfully added to your favorite character.",
                show_alert=True)
        else:
            context.bot.answer_callback_query(
                query.id,
                text=
                f"{callback_anime_data} is already exists in your favorite characters list!",
                show_alert=True)
Exemple #8
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:
            message.reply_text(
                "{} is no longer AFK!\nTime you were AFK for: {}".format(firstname, end_afk_time))
        except Exception:
            return
Exemple #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 == 777000:
        return
    start_afk_time = time.time()
    if len(args) >= 2:
        reason = args[1]
    else:
        reason = "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 AFK!".format(fname))
    except BadRequest:
        pass
Exemple #10
0
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
Exemple #11
0
def remove_fvrtsticker(update, context):
    message = update.effective_message
    chat = update.effective_chat
    user = update.effective_user
    args = context.args
    del_stick = " ".join(args)
    if not del_stick:
        message.reply_text(
            "Please give a your favorite sticker pack name to remove from your list."
        )
        return
    del_check = REDIS.hexists(f'fvrt_stickers2_{user.id}', del_stick)
    if not del_check == False:
        REDIS.hdel(f'fvrt_stickers2_{user.id}', del_stick)
        message.reply_text(
            f"<code>{del_stick}</code> has been succesfully deleted from your list.",
            parse_mode=ParseMode.HTML)
    else:
        message.reply_text(
            f"<code>{del_stick}</code> doesn't exist in your favorite sticker pack list.",
            parse_mode=ParseMode.HTML)
Exemple #12
0
def removemangalist(update, context):
    user = update.effective_user
    message = update.effective_message
    removewlist = message.text.split(' ', 1)
    args = context.args
    query = " ".join(args)
    if not query:
        message.reply_text(
            "Please enter a manga name to remove from your manga list.")
        return
    fvrt_char = list(REDIS.sunion(f'anime_mangaread{user.id}'))
    removewlist = removewlist[1]

    if removewlist not in fvrt_char:
        message.reply_text(
            f"<code>{removewlist}</code> doesn't exist in your manga list.",
            parse_mode=ParseMode.HTML)
    else:
        message.reply_text(
            f"<code>{removewlist}</code> has been removed from your favorite characters list.",
            parse_mode=ParseMode.HTML)
        REDIS.srem(f'anime_mangaread{user.id}', removewlist)
Exemple #13
0
def removewatchlist(update, context):
    user = update.effective_user
    message = update.effective_message
    removewlist = message.text.split(' ', 1)
    args = context.args
    query = " ".join(args)
    if not query:
        message.reply_text(
            "Please enter a anime name to remove from your watchlist.")
        return
    watchlist = list(REDIS.sunion(f'anime_watch_list{user.id}'))
    removewlist = removewlist[1]

    if removewlist not in watchlist:
        message.reply_text(
            f"<code>{removewlist}</code> doesn't exist in your watch list.",
            parse_mode=ParseMode.HTML)
    else:
        message.reply_text(
            f"<code>{removewlist}</code> has been removed from your watch list.",
            parse_mode=ParseMode.HTML)
        REDIS.srem(f'anime_watch_list{user.id}', removewlist)
Exemple #14
0
def list_fvrtsticker(update, context):
    message = update.effective_message
    chat = update.effective_chat
    user = update.effective_user
    fvrt_stickers_list = REDIS.hvals(f'fvrt_stickers2_{user.id}')
    fvrt_stickers_list.sort()
    fvrt_stickers_list = "\n• ".join(fvrt_stickers_list)
    if fvrt_stickers_list:
        message.reply_text("{}'s favorite sticker packs:\n• {}".format(
            user.first_name, fvrt_stickers_list),
                           parse_mode=ParseMode.HTML)
    else:
        message.reply_text("You haven't added any sticker yet.")
Exemple #15
0
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 reason == "none":
            if int(userc_id) == int(user_id):
                return
            res = "{} is AFK!\nSince: {}".format(fst_name, since_afk)
            update.effective_message.reply_text(res)
        else:
            if int(userc_id) == int(user_id):
                return
            res = "{} is AFK! Says it's because of:\n{}\nSince: {}".format(fst_name, reason, since_afk)
            update.effective_message.reply_text(res)
Exemple #16
0
def readmanga(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    manga_list = list(REDIS.sunion(f'anime_mangaread{user.id}'))
    manga_list.sort()
    manga_list = "\n• ".join(manga_list)
    if manga_list:
        message.reply_text("{}<b>'s manga lists:</b>"
                           "\n• {}".format(
                               mention_html(user.id, user.first_name),
                               manga_list),
                           parse_mode=ParseMode.HTML)
    else:
        message.reply_text("You havn't added anything in your manga list!")
Exemple #17
0
def watchlist(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    watchlist = list(REDIS.sunion(f'anime_watch_list{user.id}'))
    watchlist.sort()
    watchlist = "\n• ".join(watchlist)
    if watchlist:
        message.reply_text("{}<b>'s watchlist:</b>"
                           "\n• {}".format(
                               mention_html(user.id, user.first_name),
                               watchlist),
                           parse_mode=ParseMode.HTML)
    else:
        message.reply_text("You havn't added anything in your watchlist!")
Exemple #18
0
def fvrtchar(update, context):
    chat = update.effective_chat
    user = update.effective_user
    message = update.effective_message
    fvrt_char = list(REDIS.sunion(f'anime_fvrtchar{user.id}'))
    fvrt_char.sort()
    fvrt_char = "\n• ".join(fvrt_char)
    if fvrt_char:
        message.reply_text("{}<b>'s favorite characters list:</b>"
                           "\n• {}".format(
                               mention_html(user.id, user.first_name),
                               fvrt_char),
                           parse_mode=ParseMode.HTML)
    else:
        message.reply_text(
            "You havn't added anything in your favorite characters list!")
Exemple #19
0
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
        else:
            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)
Exemple #20
0
def start_afk(userid, reason):
    REDIS.set(f'is_afk_{userid}', reason)
Exemple #21
0
def end_afk(userid):
    REDIS.delete(f'is_afk_{userid}')
    return True
Exemple #22
0
def afk_reason(userid):
    return strb(REDIS.get(f'is_afk_{userid}'))
Exemple #23
0
def is_user_afk(userid):
    rget = REDIS.get(f'is_afk_{userid}')
    if rget:
        return True
    else:
        return False