blob: 596c66826e798de165c54e69e4e8a171cc105293 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import logging
from json import load
from pathlib import Path
from random import choice
import discord
from discord.errors import Forbidden
from discord.ext import commands
from discord.ext.commands.cooldowns import BucketType
log = logging.getLogger(__name__)
class Halloweenify(commands.Cog):
"""A cog to change a invokers nickname to a spooky one!"""
def __init__(self, bot: commands.Bot):
self.bot = bot
@commands.cooldown(1, 300, BucketType.user)
@commands.command()
async def halloweenify(self, ctx: commands.Context) -> None:
"""Change your nickname into a much spookier one!"""
async with ctx.typing():
with open(Path("bot/resources/halloween/halloweenify.json"), "r", encoding="utf8") as f:
data = load(f)
# Choose a random character from our list we loaded above and set apart the nickname and image url.
character = choice(data["characters"])
nickname = ''.join([nickname for nickname in character])
image = ''.join([character[nickname] for nickname in character])
# Build up a Embed
embed = discord.Embed()
embed.colour = discord.Colour.dark_orange()
embed.title = "Not spooky enough?"
embed.description = (
f"**{ctx.author.display_name}** wasn\'t spooky enough for you? That\'s understandable, "
f"{ctx.author.display_name} isn\'t scary at all! "
"Let me think of something better. Hmm... I got it!\n\n "
)
embed.set_image(url=image)
if isinstance(ctx.author, discord.Member):
try:
await ctx.author.edit(nick=nickname)
embed.description += f"Your new nickname will be: \n:ghost: **{nickname}** :jack_o_lantern:"
except Forbidden: # The bot doesn't have enough permission
embed.description += (
f"Your new nickname should be: \n :ghost: **{nickname}** :jack_o_lantern: \n\n"
f"It looks like I cannot change your name, but feel free to change it yourself."
)
else: # The command has been invoked in DM
embed.description += (
f"Your new nickname should be: \n :ghost: **{nickname}** :jack_o_lantern: \n\n"
f"Feel free to change it yourself, or invoke the command again inside the server."
)
await ctx.send(embed=embed)
def setup(bot: commands.Bot) -> None:
"""Halloweenify Cog load."""
bot.add_cog(Halloweenify(bot))
|