Add avatars for systems
This commit is contained in:
parent
b8539ec525
commit
cdf1ab89dc
@ -62,11 +62,12 @@ async def system_set(conn, message, args):
|
||||
if system is None:
|
||||
return False, "No system is registered to this account."
|
||||
|
||||
allowed_properties = ["name", "description", "tag"]
|
||||
allowed_properties = ["name", "description", "tag", "avatar"]
|
||||
db_properties = {
|
||||
"name": "name",
|
||||
"description": "description",
|
||||
"tag": "tag"
|
||||
"tag": "tag",
|
||||
"avatar": "avatar_url"
|
||||
}
|
||||
|
||||
prop = args[0]
|
||||
@ -86,6 +87,20 @@ async def system_set(conn, message, args):
|
||||
for member in members_exceeding])
|
||||
logger.debug("Members exceeding combined length with tag '{}': {}".format(value, member_names))
|
||||
return False, "The maximum length of a name plus the system tag is 32 characters. The following members would exceed the limit: {}. Please reduce the length of the tag, or rename the members.".format(member_names)
|
||||
|
||||
if prop == "avatar":
|
||||
user = await parse_mention(value)
|
||||
if user:
|
||||
# Set the avatar to the mentioned user's avatar
|
||||
# Discord doesn't like webp, but also hosts png alternatives
|
||||
value = user.avatar_url.replace(".webp", ".png")
|
||||
else:
|
||||
# Validate URL
|
||||
u = urlparse(value)
|
||||
if u.scheme in ["http", "https"] and u.netloc and u.path:
|
||||
value = value
|
||||
else:
|
||||
return False, "Invalid URL."
|
||||
else:
|
||||
# Clear from DB
|
||||
value = None
|
||||
@ -93,7 +108,11 @@ async def system_set(conn, message, args):
|
||||
db_prop = db_properties[prop]
|
||||
await db.update_system_field(conn, system_id=system["id"], field=db_prop, value=value)
|
||||
|
||||
return True, "{} system {}.".format("Updated" if value else "Cleared", prop)
|
||||
if prop == "avatar" and value:
|
||||
response = make_default_embed("Updated system avatar.").set_image(url=value)
|
||||
else:
|
||||
response = "{} system {}.".format("Updated" if value else "Cleared", prop)
|
||||
return True, response
|
||||
|
||||
@command(cmd="system link", usage="<account>", description="Links another account to your system.", category="System commands")
|
||||
async def system_link(conn, message, args):
|
||||
@ -326,7 +345,7 @@ async def member_set(conn, message, member, args):
|
||||
db_prop = db_properties[prop]
|
||||
await db.update_member_field(conn, member_id=member["id"], field=db_prop, value=value)
|
||||
|
||||
if prop == "avatar":
|
||||
if prop == "avatar" and value:
|
||||
response = make_default_embed("Updated {}'s avatar.".format(member["name"])).set_image(url=value)
|
||||
else:
|
||||
response = "{} {}'s {}.".format("Updated" if value else "Cleared", member["name"], prop)
|
||||
|
@ -231,6 +231,7 @@ async def create_tables(conn):
|
||||
name text,
|
||||
description text,
|
||||
tag text,
|
||||
avatar_url text,
|
||||
created timestamp not null default current_timestamp
|
||||
)""")
|
||||
await conn.execute("""create table if not exists members (
|
||||
|
@ -28,7 +28,10 @@ For example:
|
||||
For example:
|
||||
`pk;system set name My System` - sets your system name to "My System".
|
||||
`pk;system set description A really cool system.` - sets your system description.
|
||||
`pk;system set tag [MS]` - Sets the tag (which will be displayed after member names in messages) to "[MS]"."""),
|
||||
`pk;system set tag [MS]` - Sets the tag (which will be displayed after member names in messages) to "[MS]".
|
||||
`pk;system set avatar https://placekitten.com/400/400` - Changes your system's avatar to a linked image.
|
||||
|
||||
If you don't specify any value, the property will be cleared."""),
|
||||
("Linking accounts",
|
||||
"""If your system has multiple accounts, you can link all of them to your system, and you can use the bot from all of those accounts.
|
||||
|
||||
@ -64,7 +67,9 @@ For example:
|
||||
`pk;member set John birthdate 1996-02-27` - Changes John's birthdate to Feb 27, 1996. (Must be YYYY-MM-DD format).
|
||||
`pk;member set John birthdate 02-27` - Changes John's birthdate to February 27th, with no year.
|
||||
`pk;member set John avatar https://placekitten.com/400/400` - Changes John's avatar to a linked image.
|
||||
`pk;member set John avatar @JohnsAccount` - Changes John's avatar to the avatar of the mentioned account."""),
|
||||
`pk;member set John avatar @JohnsAccount` - Changes John's avatar to the avatar of the mentioned account.
|
||||
|
||||
If you don't specify any value, the property will be cleared."""),
|
||||
("Removing a member",
|
||||
"""If you want to delete a member, you can use the `pk;member delete` command.
|
||||
|
||||
|
@ -204,6 +204,9 @@ async def generate_system_info_card(conn, system: asyncpg.Record) -> discord.Emb
|
||||
if system["name"]:
|
||||
card.title = system["name"]
|
||||
|
||||
if system["avatar_url"]:
|
||||
card.set_thumbnail(url=system["avatar_url"])
|
||||
|
||||
if system["tag"]:
|
||||
card.add_field(name="Tag", value=system["tag"])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user