aboutsummaryrefslogtreecommitdiffstats
path: root/bot/cogs/hacktober/halloween_facts.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot/cogs/hacktober/halloween_facts.py')
-rw-r--r--bot/cogs/hacktober/halloween_facts.py76
1 files changed, 0 insertions, 76 deletions
diff --git a/bot/cogs/hacktober/halloween_facts.py b/bot/cogs/hacktober/halloween_facts.py
deleted file mode 100644
index 7b5b866b..00000000
--- a/bot/cogs/hacktober/halloween_facts.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import asyncio
-import json
-import random
-from datetime import timedelta
-from pathlib import Path
-
-import discord
-from discord.ext import commands
-
-from bot.constants import HACKTOBER_CHANNEL_ID
-
-SPOOKY_EMOJIS = [
- "\N{BAT}",
- "\N{DERELICT HOUSE BUILDING}",
- "\N{EXTRATERRESTRIAL ALIEN}",
- "\N{GHOST}",
- "\N{JACK-O-LANTERN}",
- "\N{SKULL}",
- "\N{SKULL AND CROSSBONES}",
- "\N{SPIDER WEB}",
-]
-PUMPKIN_ORANGE = discord.Color(0xFF7518)
-INTERVAL = timedelta(hours=6).total_seconds()
-
-
-class HalloweenFacts:
-
- def __init__(self, bot):
- self.bot = bot
- with open(Path("bot", "resources", "halloween", "halloween_facts.json"), "r") as file:
- self.halloween_facts = json.load(file)
- self.channel = None
- self.last_fact = None
-
- async def on_ready(self):
- self.channel = self.bot.get_channel(HACKTOBER_CHANNEL_ID)
- self.bot.loop.create_task(self._fact_publisher_task())
-
- async def _fact_publisher_task(self):
- """
- A background task that runs forever, sending Halloween facts at random to the Discord channel with id equal to
- HACKTOBER_CHANNEL_ID every INTERVAL seconds.
- """
- facts = list(enumerate(self.halloween_facts))
- while True:
- # Avoid choosing each fact at random to reduce chances of facts being reposted soon.
- random.shuffle(facts)
- for index, fact in facts:
- embed = self._build_embed(index, fact)
- await self.channel.send("Your regular serving of random Halloween facts", embed=embed)
- self.last_fact = (index, fact)
- await asyncio.sleep(INTERVAL)
-
- @commands.command(name="hallofact", aliases=["hallofacts"], brief="Get the most recent Halloween fact")
- async def get_last_fact(self, ctx):
- """
- Reply with the most recent Halloween fact.
- """
- if ctx.channel != self.channel:
- return
- index, fact = self.last_fact
- embed = self._build_embed(index, fact)
- await ctx.send("Halloween fact recap", embed=embed)
-
- @staticmethod
- def _build_embed(index, fact):
- """
- Builds a Discord embed from the given fact and its index.
- """
- emoji = random.choice(SPOOKY_EMOJIS)
- title = f"{emoji} Halloween Fact #{index + 1}"
- return discord.Embed(title=title, description=fact, color=PUMPKIN_ORANGE)
-
-
-def setup(bot):
- bot.add_cog(HalloweenFacts(bot))