/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

@ -47,14 +47,16 @@
},
"commands_admin": {
"reboot": "Restart the bot",
"message": "Send a message",
"message": "Send a message",
"label": "Set user's nickname",
"warnings": "Check user's warnings",
"application": "Check user's application",
"applications": "Retrieve all applications as a JSON"
},
"commands_group_admin": {
"reboot": "Restart the bot",
"message": "Send a message",
"message": "Send a message",
"label": "Set user's nickname",
"warnings": "Check user's warnings",
"application": "Check user's application",
"applications": "Retrieve all applications as a JSON"

View File

@ -13,6 +13,7 @@ pid = getpid()
# Importing
from modules.commands.application import *
from modules.commands.applications import *
from modules.commands.label import *
from modules.commands.message import *
from modules.commands.reapply 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 pyrogram.enums.chat_type import ChatType
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 loads, dumps
@ -148,4 +150,20 @@ def killProc(pid):
p.kill()
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