示例#1
0
def list_locks(update, context):
    chat = update.effective_chat  # type: Optional[Chat]
    user = update.effective_user

    # Connection check
    conn = connected(context.bot, update, chat, user.id, need_admin=True)
    if conn:
        chat = dispatcher.bot.getChat(conn)
        chat_name = chat.title
    else:
        if update.effective_message.chat.type == "private":
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Anda bisa lakukan command ini pada grup, bukan pada PM"))
            return ""
        chat = update.effective_chat
        chat_name = update.effective_message.chat.title

    res = build_lock_message(chat.id)
    if conn:
        res = res.replace(tl(update.effective_message, 'obrolan ini'),
                          '*{}*'.format(chat_name))

    send_message(update.effective_message, res, parse_mode=ParseMode.MARKDOWN)
示例#2
0
def getsticker(update, context):
    msg = update.effective_message
    chat_id = update.effective_chat.id
    if msg.reply_to_message and msg.reply_to_message.sticker:
        send_message(update.effective_message,
                     "Hai " + "[{}](tg://user?id={})".format(
                         msg.from_user.first_name, msg.from_user.id) +
                     ", Silahkan cek file yang anda minta dibawah ini."
                     "\nTolong gunakan fitur ini dengan bijak!",
                     parse_mode=ParseMode.MARKDOWN)
        context.bot.sendChatAction(chat_id, "upload_document")
        file_id = msg.reply_to_message.sticker.file_id
        newFile = context.bot.get_file(file_id)
        newFile.download('sticker.png')
        context.bot.sendDocument(chat_id, document=open('sticker.png', 'rb'))
        context.bot.sendChatAction(chat_id, "upload_photo")
        context.bot.send_photo(chat_id, photo=open('sticker.png', 'rb'))

    else:
        send_message(
            update.effective_message,
            "Hai " + "[{}](tg://user?id={})".format(msg.from_user.first_name,
                                                    msg.from_user.id) +
            ", Tolong balas pesan stiker untuk mendapatkan gambar stiker",
            parse_mode=ParseMode.MARKDOWN)
示例#3
0
def log_user(update, context):
    chat = update.effective_chat  # type: Optional[Chat]
    msg = update.effective_message  # type: Optional[Message]
    """text = msg.text if msg.text else ""
                uid = msg.from_user.id
                uname = msg.from_user.name
                print("{} | {} | {} | {}".format(text, uname, uid, chat.title))"""
    fed_id = fedsql.get_fed_id(chat.id)
    if fed_id:
        user = update.effective_user
        if user:
            fban, fbanreason, fbantime = fedsql.get_fban_user(fed_id, user.id)
            if fban:
                send_message(
                    update.effective_message,
                    languages.tl(
                        update.effective_message,
                        "Pengguna ini dilarang di federasi saat ini!\nAlasan: `{}`"
                    ).format(fbanreason),
                    parse_mode="markdown")
                try:
                    context.bot.kick_chat_member(chat.id, user.id)
                except:
                    print("Fban: cannot banned this user")

    sql.update_user(msg.from_user.id, msg.from_user.username, chat.id,
                    chat.title)

    if msg.reply_to_message:
        sql.update_user(msg.reply_to_message.from_user.id,
                        msg.reply_to_message.from_user.username, chat.id,
                        chat.title)

    if msg.forward_from:
        sql.update_user(msg.forward_from.id, msg.forward_from.username)
示例#4
0
def reply_afk(update, context):
    message = update.effective_message  # type: Optional[Message]
 
    entities = message.parse_entities([MessageEntity.TEXT_MENTION, MessageEntity.MENTION])
    if message.entities and entities:
        for ent in entities:
            if ent.type == MessageEntity.TEXT_MENTION:
                user_id = ent.user.id
                fst_name = ent.user.first_name
 
            elif ent.type == MessageEntity.MENTION:
                user_id = get_user_id(message.text[ent.offset:ent.offset + ent.length])
                if not user_id:
                    # Should never happen, since for a user to become AFK they must have spoken. Maybe changed username?
                    return
                try:
                    chat = context.bot.get_chat(user_id)
                except BadRequest:
                    print("Error: Could not fetch userid {} for AFK module".format(user_id))
                    return
                fst_name = chat.first_name
 
            else:
                return
 
            if sql.is_afk(user_id):
                valid, reason = sql.check_afk_status(user_id)
                if valid:
                    if not reason:
                        res = tl(update.effective_message, "{} is AFK!").format(fst_name)
                    else:
                        res = tl(update.effective_message, "{} is AFK! says its because of: {}").format(fst_name,
                                                                                                        reason)
                    send_message(update.effective_message, res)
示例#5
0
def clear_rules(update, context):
    chat = update.effective_chat
    chat_id = update.effective_chat.id
    user = update.effective_user

    conn = connected(context.bot, update, chat, user.id, need_admin=True)
    if conn:
        chat = dispatcher.bot.getChat(conn)
        chat_id = conn
        chat_name = dispatcher.bot.getChat(conn).title
    else:
        if update.effective_message.chat.type == "private":
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Anda bisa lakukan command ini pada grup, bukan pada PM"))
            return ""
        chat = update.effective_chat
        chat_id = update.effective_chat.id
        chat_name = update.effective_message.chat.title

    chat_id = update.effective_chat.id
    sql.set_rules(chat_id, "")
    send_message(update.effective_message,
                 tl(update.effective_message, "Berhasil membersihkan aturan!"))
示例#6
0
    def commands(update, context):
        chat = update.effective_chat
        user = update.effective_user
        conn = connected(context.bot, update, chat, user.id, need_admin=True)
        if conn:
            chat = dispatcher.bot.getChat(conn)
            chat_id = conn
            chat_name = dispatcher.bot.getChat(conn).title
        else:
            if update.effective_message.chat.type == "private":
                send_message(
                    update.effective_message,
                    languages.tl(
                        update.effective_message,
                        "Anda bisa lakukan command ini pada grup, bukan pada PM"
                    ))
                return ""
            chat = update.effective_chat
            chat_id = update.effective_chat.id
            chat_name = update.effective_message.chat.title

        text = build_curr_disabled(chat.id)
        send_message(update.effective_message,
                     text,
                     parse_mode=ParseMode.MARKDOWN)
示例#7
0
    def setlog(update, context):
        message = update.effective_message  # type: Optional[Message]
        chat = update.effective_chat  # type: Optional[Chat]
        if chat.type == chat.CHANNEL:
            send_message(update.effective_message, tl(update.effective_message, "Sekarang, teruskan /setlog ke grup yang Anda ingin ikat saluran ini!"))

        elif message.forward_from_chat:
            sql.set_chat_log_channel(chat.id, message.forward_from_chat.id)
            try:
                message.delete()
            except BadRequest as excp:
                if excp.message == "Message to delete not found":
                    pass
                else:
                    LOGGER.exception("Error deleting message in log channel. Should work anyway though.")
                    
            try:
                context.bot.send_message(message.forward_from_chat.id,
                             tl(update.effective_message, "Saluran ini telah ditetapkan sebagai saluran log untuk {}.").format(
                                 chat.title or chat.first_name))
            except Unauthorized as excp:
                if excp.message == "Forbidden: bot is not a member of the channel chat":
                    context.bot.send_message(chat.id, tl(update.effective_message, "Gagal menyetel saluran log!\nSaya mungkin bukan admin di channel tersebut."))
                    sql.stop_chat_logging(chat.id)
                    return
                else:
                    LOGGER.exception("ERROR in setting the log channel.")
                    
            context.bot.send_message(chat.id, tl(update.effective_message, "Berhasil mengatur saluran log!"))

        else:
            send_message(update.effective_message, tl(update.effective_message, "Langkah-langkah untuk mengatur saluran log adalah:\n"
                               " - tambahkan bot ke saluran yang diinginkan\n"
                               " - Kirimkan /setlog ke saluran\n"
                               " - Teruskan /setlog ke grup\n"))
示例#8
0
def stickerid(update, context):
	msg = update.effective_message
	if msg.reply_to_message and msg.reply_to_message.sticker:
		send_message(update.effective_message, tl(update.effective_message, "Hai {}, Id stiker yang anda balas adalah :\n```{}```").format(mention_markdown(msg.from_user.id, msg.from_user.first_name), msg.reply_to_message.sticker.file_id),
											parse_mode=ParseMode.MARKDOWN)
	else:
		send_message(update.effective_message, tl(update.effective_message, "Tolong balas pesan stiker untuk mendapatkan id stiker"),
											parse_mode=ParseMode.MARKDOWN)
示例#9
0
def help_connect_chat(update, context):
    if update.effective_message.chat.type != "private":
        send_message(update.effective_message, languages.tl(update.effective_message,
                                                            "PM saya dengan command itu untuk mendapatkan bantuan Koneksi"))
        return
    else:
        send_message(update.effective_message, languages.tl(update.effective_message, "supportcmd"),
                     parse_mode="markdown")
示例#10
0
def set_blue_text_must_click(update, context):
    chat = update.effective_chat  # type: Optional[Chat]
    user = update.effective_user  # type: Optional[User]
    message = update.effective_message  # type: Optional[Message]
    args = context.args

    conn = connected(context.bot, update, chat, user.id, need_admin=True)
    if conn:
        chat_id = conn
        chat_name = dispatcher.bot.getChat(conn).title
    else:
        if update.effective_message.chat.type == "private":
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Anda bisa lakukan command ini pada grup, bukan pada PM"))
            return ""
        chat_id = update.effective_chat.id
        chat_name = update.effective_message.chat.title

    if len(args) >= 1:
        val = args[0].lower()
        if val == "off" or val == "no":
            sql.set_cleanbt(chat_id, False)
            if conn:
                text = tl(
                    update.effective_message,
                    "Penghapus pesan biru telah di *non-aktifka*n di *{}*."
                ).format(chat_name)
            else:
                text = tl(update.effective_message,
                          "Penghapus pesan biru telah di *non-aktifkan*.")
            send_message(update.effective_message, text, parse_mode="markdown")

        elif val == "yes" or val == "ya" or val == "on":
            sql.set_cleanbt(chat_id, True)
            if conn:
                text = tl(update.effective_message,
                          "Penghapus pesan biru telah di *aktifkan* di *{}*."
                          ).format(chat_name)
            else:
                text = tl(update.effective_message,
                          "Penghapus pesan biru telah di *aktifkan*.")
            send_message(update.effective_message, text, parse_mode="markdown")

        else:
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Argumen tidak dikenal - harap gunakan 'yes', atau 'no'."))
    else:
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "Pengaturan untuk penghapus pesan biru saat ini di {}: *{}*").
            format(chat_name,
                   "Enabled" if sql.is_enable(chat_id) else "Disabled"),
            parse_mode="markdown")
示例#11
0
def cmd_get(update, context):
    args = context.args
    if len(args) >= 2 and args[1].lower() == "noformat":
        get(context.bot, update, args[0], show_none=True, no_format=True)
    elif len(args) >= 1:
        get(context.bot, update, args[0], show_none=True)
    else:
        send_message(update.effective_message,
                     tl(update.effective_message, "Get what?"))
示例#12
0
def pat(update, context):
    args = context.args
    chat_id = update.effective_chat.id
    msg = str(update.message.text)
    try:
        msg = msg.split(" ", 1)[1]
    except IndexError:
        msg = ""
    msg_id = update.effective_message.reply_to_message.message_id if update.effective_message.reply_to_message else update.effective_message.message_id
    pats = []
    pats = json.loads(
        urllib.request.urlopen(
            urllib.request.Request('http://headp.at/js/pats.json',
                                   headers={
                                       'User-Agent':
                                       'Mozilla/5.0 (X11; U; Linux i686) '
                                       'Gecko/20071127 Firefox/2.0.0.11'
                                   })).read().decode('utf-8'))
    if "@" in msg and len(msg) > 5:
        context.bot.send_photo(
            chat_id,
            f'https://headp.at/pats/{urllib.parse.quote(random.choice(pats))}',
            caption=msg)
    else:
        context.bot.send_photo(
            chat_id,
            f'https://headp.at/pats/{urllib.parse.quote(random.choice(pats))}',
            reply_to_message_id=msg_id)
    curr_user = "******".format(
        mention_markdown(msg.from_user.id, msg.from_user.first_name))

    user_id = extract_user(update.effective_message, args)
    if user_id and user_id != "error":
        slapped_user = context.bot.get_chat(user_id)
        user1 = curr_user
        user2 = "{}".format(
            mention_markdown(slapped_user.id, slapped_user.first_name))

    # if no target found, bot targets the sender
    else:
        user1 = "{}".format(
            mention_markdown(context.bot.id, context.bot.first_name))
        user2 = curr_user

    temp = random.choice(tl(update.effective_message, "SLAP_TEMPLATES"))
    item = random.choice(tl(update.effective_message, "ITEMS"))
    hit = random.choice(tl(update.effective_message, "HIT"))
    throw = random.choice(tl(update.effective_message, "THROW"))

    repl = temp.format(user1=user1,
                       user2=user2,
                       item=item,
                       hits=hit,
                       throws=throw)

    send_message(update.effective_message, repl, parse_mode=ParseMode.MARKDOWN)
示例#13
0
def no_longer_afk(update, context):
    user = update.effective_user  # type: Optional[User]
 
    if not user:  # ignore channels
        return
 
    res = sql.rm_afk(user.id)
    if res:
        send_message(update.effective_message,
                     tl(update.effective_message, "{} is no longer AFK!").format(update.effective_user.first_name))
示例#14
0
def afk(update, context):
    args = update.effective_message.text.split(None, 1)
    if len(args) >= 2:
        reason = args[1]
    else:
        reason = ""
 
    sql.set_afk(update.effective_user.id, reason)
    send_message(update.effective_message,
                 tl(update.effective_message, "{} is now AFK!").format(update.effective_user.first_name))
示例#15
0
def set_language(update, context):
    msg = update.effective_message  # type: Optional[Message]
    chat = update.effective_chat  # type: Optional[Chat]
    user = update.effective_user  # type: Optional[User]

    getlang = sql.get_lang(chat.id)
    if getlang == 'None' or not getlang:
        if msg.from_user.language_code:
            sql.set_lang(msg.chat.id, msg.from_user.language_code)
            getlang = msg.from_user.language_code
        else:
            sql.set_lang(msg.chat.id, 'en')
            getlang = 'en'
    loaded_langs = []
    tmp_list = []
    counter = 0

    for x in LOADED_LANGS_ID:
        counter += 1
        tmp_list.append(
            InlineKeyboardButton(LANGS_TEXT[x],
                                 callback_data="set_lang({})".format(x)))
        if counter % 2 == 0:
            loaded_langs.append(tmp_list)
            tmp_list = []
        if counter == len(LOADED_LANGS_ID):
            loaded_langs.append(tmp_list)

    loaded_langs.append([
        InlineKeyboardButton(
            "Translate",
            url=
            "https://github.com/fortifying/fortizerswatcher/blob/master/TRANSLATION.md"
        )
    ])

    keyboard = InlineKeyboardMarkup(loaded_langs)

    if chat.title:
        chatname = chat.title
    else:
        if chat.type == "private":
            chatname = user.first_name
        else:
            chatname = tl(update.effective_message, "obrolan saat ini")

    currlang = LANGS_TEXT[getlang] if LANGS_TEXT.get(
        getlang) else "(Deleted langs)"
    send_message(
        update.effective_message,
        tl(msg,
           "Bahasa di *{}* saat ini adalah:\n{}.\n\nPilih bahasa:").format(
               chatname, currlang),
        parse_mode="markdown",
        reply_markup=keyboard)
示例#16
0
def set_verify_welcome(update, context):
    args = context.args
    chat = update.effective_chat
    getcur, extra_verify, cur_value, timeout, timeout_mode, cust_text = sql.welcome_security(
        chat.id)
    if len(args) >= 1:
        var = args[0].lower()
        if (var == "yes" or var == "on"):
            check = context.bot.getChatMember(chat.id, context.bot.id)
            if check.status == 'member' or check[
                    'can_restrict_members'] is False:
                text = tl(
                    update.effective_message,
                    "Saya tidak bisa membatasi orang di sini! Pastikan saya admin agar bisa membisukan seseorang!"
                )
                send_message(update.effective_message,
                             text,
                             parse_mode="markdown")
                return ""
            sql.set_welcome_security(chat.id, getcur, True, str(cur_value),
                                     str(timeout), int(timeout_mode),
                                     cust_text)
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "Keamanan untuk member baru di aktifkan! Pengguna baru di wajibkan harus menyelesaikan verifikasi untuk chat"
                ))
        elif (var == "no" or var == "off"):
            sql.set_welcome_security(chat.id, getcur, False, str(cur_value),
                                     str(timeout), int(timeout_mode),
                                     cust_text)
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "Di nonaktifkan, pengguna dapat mengklik tombol untuk langsung chat"
                ))
        else:
            send_message(update.effective_message,
                         tl(update.effective_message,
                            "Silakan tulis `on`/`ya`/`off`/`ga`!"),
                         parse_mode=ParseMode.MARKDOWN)
    else:
        getcur, extra_verify, cur_value, timeout, timeout_mode, cust_text = sql.welcome_security(
            chat.id)
        if cur_value[:1] == "0":
            cur_value = tl(update.effective_message, "Selamanya")
        text = tl(
            update.effective_message,
            "Pengaturan saat ini adalah:\nWelcome security: `{}`\nVerify security: `{}`\nMember akan di mute selama: `{}`\nWaktu verifikasi timeout: `{}`\nTombol unmute custom: `{}`"
        ).format(getcur, extra_verify, cur_value, make_time(int(timeout)),
                 cust_text)
        send_message(update.effective_message, text, parse_mode="markdown")
示例#17
0
    def unsetlog(update, context):
        message = update.effective_message  # type: Optional[Message]
        chat = update.effective_chat  # type: Optional[Chat]

        log_channel = sql.stop_chat_logging(chat.id)
        if log_channel:
            context.bot.send_message(log_channel, tl(update.effective_message, "Channel telah dibatalkan tautannya {}").format(chat.title))
            send_message(update.effective_message, tl(update.effective_message, "Log saluran telah dinonaktifkan."))

        else:
            send_message(update.effective_message, tl(update.effective_message, "Belum ada saluran log yang ditetapkan!"))
示例#18
0
def disconnect_chat(update, context):
    if update.effective_chat.type == 'private':
        disconnection_status = sql.disconnect(update.effective_message.from_user.id)
        if disconnection_status:
            sql.disconnected_chat = send_message(update.effective_message,
                                                 languages.tl(update.effective_message, "Terputus dari obrolan!"))
        else:
            send_message(update.effective_message, languages.tl(update.effective_message, "Anda tidak terkoneksi!"))
    else:
        send_message(update.effective_message,
                     languages.tl(update.effective_message, "Penggunaan terbatas hanya untuk PM"))
示例#19
0
def purge(update, context):
    args = context.args
    msg = update.effective_message  # type: Optional[Message]
    if msg.reply_to_message:
        user = update.effective_user  # type: Optional[User]
        chat = update.effective_chat  # type: Optional[Chat]
        if user_can_delete(chat, user, context.bot.id):
            message_id = msg.reply_to_message.message_id
            if args and args[0].isdigit():
                delete_to = message_id + int(args[0])
            else:
                delete_to = msg.message_id - 1
            for m_id in range(delete_to, message_id - 1,
                              -1):  # Reverse iteration over message ids
                try:
                    context.bot.deleteMessage(chat.id, m_id)
                except BadRequest as err:
                    if err.message == "Message can't be deleted":
                        send_message(
                            update.effective_message,
                            tl(
                                update.effective_message,
                                "Tidak dapat menghapus semua pesan. Pesannya mungkin terlalu lama, saya mungkin "
                                "tidak memiliki hak menghapus, atau ini mungkin bukan supergrup."
                            ))

                    elif err.message != "Message to delete not found":
                        LOGGER.exception("Error while purging chat messages.")

            try:
                msg.delete()
            except BadRequest as err:
                if err.message == "Message can't be deleted":
                    send_message(
                        update.effective_message,
                        tl(
                            update.effective_message,
                            "Tidak dapat menghapus semua pesan. Pesannya mungkin terlalu lama, saya mungkin "
                            "tidak memiliki hak menghapus, atau ini mungkin bukan supergrup."
                        ))

                elif err.message != "Message to delete not found":
                    LOGGER.exception("Error while purging chat messages.")

            send_message(update.effective_message,
                         tl(update.effective_message, "Pembersihan selesai."))
            return "<b>{}:</b>" \
                   "\n#PURGE" \
                   "\n<b>Admin:</b> {}" \
                   "\nPurged <code>{}</code> messages.".format(html.escape(chat.title),
                                                               mention_html(user.id, user.first_name),
                                                               delete_to - message_id)

    else:
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "Balas pesan untuk memilih tempat mulai membersihkan."))

    return ""
示例#20
0
def locktypes(update, context):
    locklist = list(LOCK_TYPES)
    locklist.sort()
    perm = list(LOCK_CHAT_RESTRICTION)
    perm.sort()
    send_message(update.effective_message,
                 "\n - ".join([
                     tl(update.effective_message,
                        "*Jenis kunci yang tersedia adalah:* ")
                 ] + locklist) + "\n\n" + "\n - ".join([
                     tl(update.effective_message,
                        "*Jenis izin kunci yang tersedia adalah:* ")
                 ] + perm),
                 parse_mode="markdown")
示例#21
0
    def logging(update, context):
        message = update.effective_message  # type: Optional[Message]
        chat = update.effective_chat  # type: Optional[Chat]

        log_channel = sql.get_chat_log_channel(chat.id)
        if log_channel:
            log_channel_info = context.bot.get_chat(log_channel)
            send_message(update.effective_message, 
                tl(update.effective_message, "Grup ini memiliki semua log yang dikirim ke: {} (`{}`)").format(escape_markdown(log_channel_info.title),
                                                                         log_channel),
                parse_mode=ParseMode.MARKDOWN)

        else:
            send_message(update.effective_message, tl(update.effective_message, "Tidak ada saluran log yang telah ditetapkan untuk grup ini!"))
示例#22
0
 def list_cmds(update, context):
     if DISABLE_CMDS + DISABLE_OTHER:
         result = ""
         for cmd in set(DISABLE_CMDS + DISABLE_OTHER):
             result += " - `{}`\n".format(escape_markdown(cmd))
         send_message(
             update.effective_message,
             languages.tl(
                 update.effective_message,
                 "Perintah berikut dapat diubah:\n{}").format(result),
             parse_mode=ParseMode.MARKDOWN)
     else:
         send_message(
             update.effective_message,
             languages.tl(update.effective_message,
                          "Tidak ada perintah yang dapat dinonaktifkan."))
示例#23
0
def blacklist(update, context):
    msg = update.effective_message  # type: Optional[Message]
    chat = update.effective_chat  # type: Optional[Chat]
    user = update.effective_user  # type: Optional[User]
    args = context.args

    conn = connected(context.bot, update, chat, user.id, need_admin=False)
    if conn:
        chat_id = conn
        chat_name = dispatcher.bot.getChat(conn).title
    else:
        if chat.type == "private":
            return
        else:
            chat_id = update.effective_chat.id
            chat_name = chat.title

    filter_list = tl(
        update.effective_message,
        "<b>Kata daftar hitam saat ini di {}:</b>\n").format(chat_name)

    all_blacklisted = sql.get_chat_blacklist(chat_id)

    if len(args) > 0 and args[0].lower() == 'copy':
        for trigger in all_blacklisted:
            filter_list += "<code>{}</code>\n".format(html.escape(trigger))
    else:
        for trigger in all_blacklisted:
            filter_list += " - <code>{}</code>\n".format(html.escape(trigger))

    # for trigger in all_blacklisted:
    #     filter_list += " - <code>{}</code>\n".format(html.escape(trigger))

    split_text = split_message(filter_list)
    for text in split_text:
        if filter_list == tl(
                update.effective_message,
                "<b>Kata daftar hitam saat ini di {}:</b>\n").format(
                    chat_name):
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Tidak ada pesan daftar hitam di <b>{}</b>!").format(
                       chat_name),
                parse_mode=ParseMode.HTML)
            return
        send_message(update.effective_message, text, parse_mode=ParseMode.HTML)
示例#24
0
def del_message(update, context) -> str:
    if update.effective_message.reply_to_message:
        user = update.effective_user  # type: Optional[User]
        chat = update.effective_chat  # type: Optional[Chat]
        if user_can_delete(chat, user, context.bot.id):
            update.effective_message.reply_to_message.delete()
            update.effective_message.delete()
            return "<b>{}:</b>" \
                   "\n#DEL" \
                   "\n<b>Admin:</b> {}" \
                   "\nMessage deleted.".format(html.escape(chat.title),
                                               mention_html(user.id, user.first_name))
    else:
        send_message(update.effective_message,
                     tl(update.effective_message, "Apa yang ingin di hapus?"))

    return ""
示例#25
0
def broadcast(update, context):
    to_send = update.effective_message.text.split(None, 1)
    if len(to_send) >= 2:
        chats = sql.get_all_chats() or []
        failed = 0
        for chat in chats:
            try:
                context.bot.sendMessage(int(chat.chat_id), to_send[1])
                sleep(0.1)
            except TelegramError:
                failed += 1
                LOGGER.warning("Couldn't send broadcast to %s, group name %s",
                               str(chat.chat_id), str(chat.chat_name))

        send_message(
            update.effective_message,
            "Siaran selesai. {} grup gagal menerima pesan, mungkin "
            "karena ditendang.".format(failed))
示例#26
0
    def disable(update, context):
        chat = update.effective_chat  # type: Optional[Chat]
        user = update.effective_user
        args = context.args

        conn = connected(context.bot, update, chat, user.id, need_admin=True)
        if conn:
            chat = dispatcher.bot.getChat(conn)
            chat_id = conn
            chat_name = dispatcher.bot.getChat(conn).title
        else:
            if update.effective_message.chat.type == "private":
                send_message(
                    update.effective_message,
                    languages.tl(
                        update.effective_message,
                        "Anda bisa lakukan command ini pada grup, bukan pada PM"
                    ))
                return ""
            chat = update.effective_chat
            chat_id = update.effective_chat.id
            chat_name = update.effective_message.chat.title

        if len(args) >= 1:
            disable_cmd = args[0]
            if disable_cmd.startswith(CMD_STARTERS):
                disable_cmd = disable_cmd[1:]

            if disable_cmd in set(DISABLE_CMDS + DISABLE_OTHER):
                sql.disable_command(chat.id, disable_cmd)
                if conn:
                    text = languages.tl(
                        update.effective_message,
                        "Menonaktifkan penggunaan `{}` pada *{}*").format(
                            disable_cmd, chat_name)
                else:
                    text = languages.tl(
                        update.effective_message,
                        "Menonaktifkan penggunaan `{}`").format(disable_cmd)
                send_message(update.effective_message,
                             text,
                             parse_mode=ParseMode.MARKDOWN)
            else:
                send_message(
                    update.effective_message,
                    languages.tl(update.effective_message,
                                 "Perintah itu tidak bisa dinonaktifkan"))

        else:
            send_message(
                update.effective_message,
                languages.tl(update.effective_message,
                             "Apa yang harus saya nonaktifkan?"))
示例#27
0
def ping(update, context):
    start_time = time.time()
    test = send_message(update.effective_message, "Pong!")
    end_time = time.time()
    ping_time = float(end_time - start_time)
    context.bot.editMessageText(
        chat_id=update.effective_chat.id,
        message_id=test.message_id,
        text=tl(update.effective_message,
                "Pong!\nKecepatannya: {0:.2f} detik").format(
                    round(ping_time, 2) % 60))
示例#28
0
def connection_chat(update, context):
    chat = update.effective_chat
    user = update.effective_user
 
    conn = connected(context.bot, update, chat, user.id, need_admin=True)
    if conn:
        chat = dispatcher.bot.getChat(conn)
        chat_name = dispatcher.bot.getChat(conn).title
    else:
        if update.effective_message.chat.type != "private":
            return
        chat = update.effective_chat
        chat_name = update.effective_message.chat.title
 
    if conn:
        teks = languages.tl(update.effective_message, "Saat ini Anda terhubung dengan {}.\n").format(chat_name)
    else:
        teks = languages.tl(update.effective_message, "Saat ini Anda tidak terhubung dengan grup.\n")
    teks += languages.tl(update.effective_message, "supportcmd")
    send_message(update.effective_message, teks, parse_mode="markdown")
示例#29
0
def leavechat(update, context):
    args = context.args
    if args:
        chat_id = int(args[0])
    else:
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "Anda sepertinya tidak mengacu pada obrolan"))
    try:
        chat = context.bot.getChat(chat_id)
        titlechat = context.bot.get_chat(chat_id).title
        context.bot.sendMessage(
            chat_id, tl(update.effective_message, "Selamat tinggal semua 😁"))
        context.bot.leaveChat(chat_id)
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "Saya telah keluar dari grup {}").format(titlechat))

    except BadRequest as excp:
        if excp.message == "Chat not found":
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "Sepertinya saya sudah keluar atau di tendang di grup tersebut"
                ))
        else:
            return
示例#30
0
def private_rules(update, context):
    args = context.args
    chat = update.effective_chat  # type: Optional[Chat]
    user = update.effective_user  # type: Optional[User]
    conn = connected(context.bot, update, chat, user.id)
    if conn:
        chat_id = conn
        chat_name = dispatcher.bot.getChat(conn).title
    else:
        chat_id = update.effective_chat.id
        if chat.type == "private":
            chat_name = chat.title
        else:
            chat_name = chat.title

    if len(args) >= 1:
        if args[0] in ("yes", "on", "ya"):
            sql.private_rules(str(chat_id), True)
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "Private Rules di *aktifkan*, pesan peraturan akan di kirim di PM."
                ),
                parse_mode="markdown")
        elif args[0] in ("no", "off"):
            sql.private_rules(str(chat_id), False)
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "Private Rules di *non-aktifkan*, pesan peraturan akan di kirim di grup."
                ),
                parse_mode="markdown")
        else:
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "Argumen tidak dikenal - harap gunakan 'yes', atau 'no'."))
    else:
        is_private = sql.get_private_rules(chat_id)
        send_message(update.effective_message,
                     tl(update.effective_message,
                        "Pengaturan Private Rules di {}: *{}*").format(
                            chat_name,
                            "Enabled" if is_private else "Disabled"),
                     parse_mode="markdown")