/label command

This commit is contained in:
Profitroll 2022-12-10 17:29:06 +01:00
parent 65b7b365d2
commit c0f6bd8b11
4 changed files with 44 additions and 3 deletions

View File

@ -48,6 +48,7 @@
"commands_admin": { "commands_admin": {
"reboot": "Restart the bot", "reboot": "Restart the bot",
"message": "Send a message", "message": "Send a message",
"label": "Set user's nickname",
"warnings": "Check user's warnings", "warnings": "Check user's warnings",
"application": "Check user's application", "application": "Check user's application",
"applications": "Retrieve all applications as a JSON" "applications": "Retrieve all applications as a JSON"
@ -55,6 +56,7 @@
"commands_group_admin": { "commands_group_admin": {
"reboot": "Restart the bot", "reboot": "Restart the bot",
"message": "Send a message", "message": "Send a message",
"label": "Set user's nickname",
"warnings": "Check user's warnings", "warnings": "Check user's warnings",
"application": "Check user's application", "application": "Check user's application",
"applications": "Retrieve all applications as a JSON" "applications": "Retrieve all applications as a JSON"

View File

@ -13,6 +13,7 @@ pid = getpid()
# Importing # Importing
from modules.commands.application import * from modules.commands.application import *
from modules.commands.applications import * from modules.commands.applications import *
from modules.commands.label import *
from modules.commands.message import * from modules.commands.message import *
from modules.commands.reapply import * from modules.commands.reapply import *
from modules.commands.reboot import * from modules.commands.reboot import *

20
modules/commands/label.py Normal file
View File

@ -0,0 +1,20 @@
from app import app
from pyrogram import filters
from modules.utils import should_quote, find_user
@app.on_message(~ filters.scheduled & filters.private & filters.command(["label"], prefixes=["/"]))
async def cmd_label(app, msg):
if len(msg.command) < 3:
await msg.reply_text("Invalid syntax:\n`/label USER NICKNAME`")
return
target = await find_user(app, msg.command[1])
if target is not None:
nickname = " ".join(msg.command[2:])
await msg.reply_text(f"Setting **{target.id}**'s label to **{nickname}**...", quote=should_quote(msg))
else:
await msg.reply_text(f"User not found")

View File

@ -1,6 +1,8 @@
from typing import Any, Union from typing import Any, Union
from pyrogram.enums.chat_type import ChatType from pyrogram.enums.chat_type import ChatType
from pyrogram.types import User from pyrogram.types import User
from pyrogram.client import Client
from pyrogram.errors import bad_request_400
from ujson import JSONDecodeError as JSONDecodeError from ujson import JSONDecodeError as JSONDecodeError
from ujson import loads, dumps from ujson import loads, dumps
@ -149,3 +151,19 @@ def killProc(pid):
def should_quote(msg): def should_quote(msg):
return True if msg.chat.type is not ChatType.PRIVATE else False return True if msg.chat.type is not ChatType.PRIVATE else False
async def find_user(app: Client, query: Union[str, int]):
try:
result = await app.get_users(int(query))
if result == [] or result == None:
raise TypeError
except (TypeError, ValueError):
try:
result = await app.get_users(query)
except bad_request_400.UsernameNotOccupied:
return None
except bad_request_400.UsernameInvalid:
return None
except bad_request_400.PeerIdInvalid:
return None
return result