Add avatar preview on set
This commit is contained in:
		| @@ -6,8 +6,7 @@ import discord | ||||
|  | ||||
| from pluralkit import db | ||||
| from pluralkit.bot import client, logger | ||||
| from pluralkit.utils import command, generate_hid, generate_member_info_card, generate_system_info_card, member_command, parse_mention, text_input, get_system_fuzzy, get_member_fuzzy, command_map | ||||
|  | ||||
| from pluralkit.utils import command, generate_hid, generate_member_info_card, generate_system_info_card, member_command, parse_mention, text_input, get_system_fuzzy, get_member_fuzzy, command_map, make_default_embed | ||||
|  | ||||
| @command(cmd="pk;system", subcommand=None, description="Shows information about your system.") | ||||
| async def this_system_info(conn, message, args): | ||||
| @@ -316,7 +315,12 @@ async def member_avatar(conn, message, member, args): | ||||
|  | ||||
|     async with conn.transaction(): | ||||
|         await db.update_member_field(conn, member_id=member["id"], field="avatar_url", value=avatar_url) | ||||
|         return True, "Avatar set." if avatar_url else "Avatar cleared." | ||||
|          | ||||
|         # Add the avatar you just set into the success embed | ||||
|         if not avatar_url: | ||||
|             return True, "Avatar cleared." | ||||
|         else: | ||||
|             return True, make_default_embed("Avatar set.").set_image(url=avatar_url) | ||||
|  | ||||
|  | ||||
| @member_command(cmd="pk;member", subcommand="proxy", usage="[example]", description="Updates a member's proxy settings. Needs an \"example\" proxied message containing the string \"text\" (eg. [text], |text|, etc).") | ||||
| @@ -394,23 +398,25 @@ async def message_info(conn, message, args): | ||||
|     return True | ||||
|  | ||||
|  | ||||
| @command(cmd="pk;help", subcommand=None, usage="[system|member|message]", description="Shows this help message.") | ||||
| async def show_help(conn, message, args): | ||||
| def make_help(cmds): | ||||
|     embed = discord.Embed() | ||||
|     embed.colour = discord.Colour.blue() | ||||
|     embed.title = "PluralKit Help" | ||||
|     embed.set_footer( | ||||
|         text="<> denotes mandatory arguments, [] denotes optional arguments") | ||||
|  | ||||
|     for cmd, subcommands in cmds: | ||||
|         for subcmd, (_, usage, description) in subcommands.items(): | ||||
|             embed.add_field(name="{} {} {}".format( | ||||
|                 cmd, subcmd or "", usage or ""), value=description, inline=False) | ||||
|     return embed | ||||
|  | ||||
| @command(cmd="pk;help", subcommand=None, usage="[system|member|message]", description="Shows this help message.") | ||||
| async def show_help(conn, message, args): | ||||
|     if len(args) > 0 and ("pk;" + args[0]) in command_map: | ||||
|         cmds = ["", ("pk;" + args[0], command_map["pk;" + args[0]])] | ||||
|     else: | ||||
|         cmds = command_map.items() | ||||
|  | ||||
|     for cmd, subcommands in cmds: | ||||
|         for subcmd, (_, usage, description) in subcommands.items(): | ||||
|             embed.add_field(name="{} {} {}".format( | ||||
|                 cmd, subcmd or "", usage or ""), value=description, inline=False) | ||||
|  | ||||
|     await client.send_message(message.channel, embed=embed) | ||||
|     await client.send_message(message.channel, embed=make_help(cmds)) | ||||
|     return True | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import random | ||||
| import re | ||||
| import string | ||||
| import time | ||||
|  | ||||
| import asyncio | ||||
| import asyncpg | ||||
| @@ -59,6 +60,18 @@ async def get_member_fuzzy(conn, system_id: int, key: str, system_only=True) -> | ||||
|         if member is not None: | ||||
|             return member | ||||
|  | ||||
| def make_default_embed(message): | ||||
|     embed = discord.Embed() | ||||
|     embed.colour = discord.Colour.blue() | ||||
|     embed.description = message | ||||
|     return embed | ||||
|  | ||||
| def make_error_embed(message): | ||||
|     embed = discord.Embed() | ||||
|     embed.colour = discord.Colour.dark_red() | ||||
|     embed.description = message | ||||
|     return embed | ||||
|  | ||||
| command_map = {} | ||||
|  | ||||
| # Command wrapper | ||||
| @@ -69,7 +82,10 @@ command_map = {} | ||||
| def command(cmd, subcommand, usage=None, description=None): | ||||
|     def wrap(func): | ||||
|         async def wrapper(conn, message, args): | ||||
|             before = time.perf_counter() | ||||
|             res = await func(conn, message, args) | ||||
|             after = time.perf_counter() | ||||
|             time_ms = (after - before) * 1000 | ||||
|  | ||||
|             if res is not None: | ||||
|                 if not isinstance(res, tuple): | ||||
| @@ -79,25 +95,21 @@ def command(cmd, subcommand, usage=None, description=None): | ||||
|  | ||||
|                 if not success and not msg: | ||||
|                     # Failure, no message, print usage | ||||
|                     usage_embed = discord.Embed() | ||||
|                     usage_embed.colour = discord.Colour.blue() | ||||
|                     usage_embed.add_field( | ||||
|                         name="Usage", value=usage, inline=False) | ||||
|  | ||||
|                     await client.send_message(message.channel, embed=usage_embed) | ||||
|                     usage_str = "**Usage:** {} {} {}".format(cmd, subcommand or "", usage or "") | ||||
|                     await client.send_message(message.channel, embed=make_default_embed(usage_str)) | ||||
|                 elif not success: | ||||
|                     # Failure, print message | ||||
|                     error_embed = discord.Embed() | ||||
|                     error_embed.colour = discord.Colour.dark_red() | ||||
|                     error_embed.description = msg | ||||
|                     await client.send_message(message.channel, embed=error_embed) | ||||
|                     embed = msg if isinstance(msg, discord.Embed) else make_error_embed(msg) | ||||
|                     # embed.set_footer(text="{:.02f} ms".format(time_ms)) | ||||
|                     await client.send_message(message.channel, embed=embed) | ||||
|                 elif msg: | ||||
|                     # Success, print message | ||||
|                     success_embed = discord.Embed() | ||||
|                     success_embed.colour = discord.Colour.blue() | ||||
|                     success_embed.description = msg | ||||
|                     await client.send_message(message.channel, embed=success_embed) | ||||
|                     embed = msg if isinstance(msg, discord.Embed) else make_default_embed(msg) | ||||
|                     # embed.set_footer(text="{:.02f} ms".format(time_ms)) | ||||
|                     await client.send_message(message.channel, embed=embed) | ||||
|                 # Success, don't print anything | ||||
|  | ||||
|         # Put command in map | ||||
|         if cmd not in command_map: | ||||
|             command_map[cmd] = {} | ||||
|         if subcommand not in command_map[cmd]: | ||||
| @@ -133,7 +145,7 @@ def member_command(cmd, subcommand, usage=None, description=None, system_only=Tr | ||||
|                 return False, "Can't find member \"{}\".".format(args[0]) | ||||
|  | ||||
|             return await func(conn, message, member, args[1:]) | ||||
|         return command(cmd=cmd, subcommand=subcommand, usage=usage, description=description)(wrapper) | ||||
|         return command(cmd=cmd, subcommand=subcommand, usage="<name|id> {}".format(usage or ""), description=description)(wrapper) | ||||
|     return wrap | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user