Drag
commited on
Commit
·
ecc4411
1
Parent(s):
1f3a510
Create banall.py
Browse files- Mikobot/plugins/banall.py +41 -0
Mikobot/plugins/banall.py
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# <============================================== IMPORTS =========================================================>
|
2 |
+
from telegram import Update
|
3 |
+
from telegram.ext import CommandHandler, ContextTypes
|
4 |
+
from telegram.error import BadRequest
|
5 |
+
|
6 |
+
from Mikobot import function, LOGGER as logger
|
7 |
+
from Mikobot.plugins.helper_funcs.chat_status import check_admin, connection_status, is_user_admin
|
8 |
+
|
9 |
+
# <=======================================================================================================>
|
10 |
+
|
11 |
+
# <================================================ BAN ALL FUNCTION =====================================================>
|
12 |
+
|
13 |
+
@connection_status
|
14 |
+
@check_admin(permission="can_restrict_members", is_both=True)
|
15 |
+
async def ban_all(update: Update, context: ContextTypes.DEFAULT_TYPE) -> str:
|
16 |
+
chat = update.effective_chat
|
17 |
+
user = update.effective_user
|
18 |
+
log_message = ""
|
19 |
+
bot = context.bot
|
20 |
+
|
21 |
+
# Get all members in the chat
|
22 |
+
members = await chat.get_members()
|
23 |
+
admin_ids = [admin.user.id for admin in await chat.get_administrators()]
|
24 |
+
|
25 |
+
for member in members:
|
26 |
+
if member.user.id not in admin_ids and member.user.id != bot.id:
|
27 |
+
try:
|
28 |
+
await chat.ban_member(member.user.id)
|
29 |
+
log_message += f"Banned {member.user.first_name} ({member.user.id})\n"
|
30 |
+
except BadRequest as excp:
|
31 |
+
logger.warning(f"Failed to ban {member.user.id}: {excp.message}")
|
32 |
+
log_message += f"Failed to ban {member.user.first_name} ({member.user.id}): {excp.message}\n"
|
33 |
+
|
34 |
+
await update.effective_message.reply_text("All non-admin members have been banned.")
|
35 |
+
return log_message
|
36 |
+
|
37 |
+
# <================================================ HANDLER =======================================================>
|
38 |
+
# Register the ban_all command handler
|
39 |
+
function(CommandHandler("banall", ban_all, block=False))
|
40 |
+
|
41 |
+
# <================================================ END =======================================================>
|