diff --git a/cogs/easter.py b/cogs/easter.py deleted file mode 100644 index 3859dcd7488eae4b82d4b82688707acc65a08377..0000000000000000000000000000000000000000 --- a/cogs/easter.py +++ /dev/null @@ -1,107 +0,0 @@ -import json -import disnake -from disnake.ext import commands -from cogs.help import handle_error - - -class Easter(commands.Cog): - def __init__(self, bot): - self.bot = bot - self.data = self.load_data() - # self.messages = [] - # self.reaction_timer.start() - - def load_data(self): - data_file = open("data/easter.json", mode="r") - return json.load(data_file) - - def save_data(self): - data_file = open("data/easter.json", mode="w") - json.dump(self.data, data_file) - - # @commands.Cog.listener(name="on_message") - # async def hide(self, message): - # if message.author == self.bot.user: - # return - # - # if message.channel.id in self.data["channels"]: - # if random.random() < self.data["probability"]: - # self.messages.append(message) - # - # @commands.Cog.listener(name="on_raw_reaction_add") - # async def seek(self, payload): - # - # if payload.member == self.bot.user or payload.message_id not in self.data["message_ids"]: - # return - # - # modifier = 1 if payload.emoji.name in self.data["reactions_add"] else -1 if payload.emoji.name in self.data[ - # "reactions_remove"] else 0 - # if modifier != 0: - # self.data["message_ids"].remove(payload.message_id) - # self.modify_leaderboard(payload.user_id, modifier) - # - # channel = await self.bot.fetch_channel(payload.channel_id) - # message = await channel.fetch_message(payload.message_id) - # await message.clear_reaction(payload.emoji.name) - # self.save_data() - # - # def modify_leaderboard(self, user_id, modifier): - # if score := self.data["leaderboard"].get(str(user_id)): - # self.data["leaderboard"][str(user_id)] = score + modifier - # else: - # self.data["leaderboard"][str(user_id)] = modifier - # - # self.save_data() - #@help() - @commands.command(name="leaderboard") - async def cmd_leaderboard(self, ctx, all=None): - leaderboard = self.data["leaderboard"] - embed = disnake.Embed(title="Egg-Hunt Leaderboard", description="Wer hat bisher die meisten Eier gefunden???") - embed.set_thumbnail(url="https://www.planet-wissen.de/kultur/religion/ostern/tempxostereiergjpg100~_v-gseagaleriexl.jpg") - - places = scores = "\u200b" - place = 0 - max = 0 if all == "all" else 10 - ready = False - for key, value in sorted(leaderboard.items(), key=lambda item: item[1], reverse=True): - try: - place += 1 - - if 0 < max < place: - if ready: - break - elif str(ctx.author.id) != key: - continue - places += f"{place}: <@!{key}>\n" - scores += f"{value:,}\n".replace(",", ".") - - if str(ctx.author.id) == key: - ready = True - except: - pass - - embed.add_field(name=f"Sucherin", value=places) - embed.add_field(name=f"Eier", value=scores) - await ctx.send("", embed=embed) - - # @tasks.loop(seconds=1) - # async def reaction_timer(self): - # delete = [] - # - # for message in self.messages: - # if random.random() < 0.6: - # if random.random() < 0.85: - # await message.add_reaction(random.choice(self.data["reactions_add"])) - # else: - # await message.add_reaction(random.choice(self.data["reactions_remove"])) - # - # self.data["message_ids"].append(message.id) - # delete.append(message) - # self.save_data() - # - # if len(delete) > 0: - # for message in delete: - # self.messages.remove(message) - - async def cog_command_error(self, ctx, error): - await handle_error(ctx, error) diff --git a/cogs/emoji_hunt.py b/cogs/emoji_hunt.py new file mode 100644 index 0000000000000000000000000000000000000000..93c4991a0bc7be9f0d383bc925f0f11adc8256f8 --- /dev/null +++ b/cogs/emoji_hunt.py @@ -0,0 +1,107 @@ +import json +import random +import disnake +from disnake.ext import commands, tasks +from cogs.help import handle_error + + +class EmojiHunt(commands.Cog): + def __init__(self, bot): + self.bot = bot + self.data = self.load_data() + self.messages = [] + self.reaction_timer.start() + + def load_data(self): + data_file = open("data/emoji_hunt.json", mode="r") + return json.load(data_file) + + def save_data(self): + data_file = open("data/emoji_hunt.json", mode="w") + json.dump(self.data, data_file) + + @commands.Cog.listener(name="on_message") + async def hide(self, message): + if message.author == self.bot.user: + return + + if message.channel.id in self.data["channels"]: + if random.random() < self.data["probability"]: + self.messages.append(message) + + @commands.Cog.listener(name="on_raw_reaction_add") + async def seek(self, payload): + + if payload.member == self.bot.user or payload.message_id not in self.data["message_ids"]: + return + + modifier = 1 if payload.emoji.name in self.data["reactions_add"] else -1 if payload.emoji.name in self.data[ + "reactions_remove"] else 0 + if modifier != 0: + self.data["message_ids"].remove(payload.message_id) + self.modify_leaderboard(payload.user_id, modifier) + + channel = await self.bot.fetch_channel(payload.channel_id) + message = await channel.fetch_message(payload.message_id) + await message.clear_reaction(payload.emoji.name) + self.save_data() + + def modify_leaderboard(self, user_id, modifier): + if score := self.data["leaderboard"].get(str(user_id)): + self.data["leaderboard"][str(user_id)] = score + modifier + else: + self.data["leaderboard"][str(user_id)] = modifier + + self.save_data() + + @commands.command(name="leaderboard") + async def cmd_leaderboard(self, ctx, all=None): + leaderboard = self.data["leaderboard"] + embed = disnake.Embed(title="Emojijagd Leaderboard", description="Wer hat am meisten Emojis gefunden?") + embed.set_thumbnail(url="https://external-preview.redd.it/vFsRraBXc5hfUGRWtPPF-NG5maHEPRWTIqamB24whF8.jpg?width=960&crop=smart&auto=webp&s=24d42c9b4f5239a4c3cac79e704b7129c9e2e4d3") + + places = scores = "\u200b" + place = 0 + max = 0 if all == "all" else 10 + ready = False + for key, value in sorted(leaderboard.items(), key=lambda item: item[1], reverse=True): + try: + place += 1 + + if 0 < max < place: + if ready: + break + elif str(ctx.author.id) != key: + continue + places += f"{place}: <@!{key}>\n" + scores += f"{value:,}\n".replace(",", ".") + + if str(ctx.author.id) == key: + ready = True + except: + pass + + embed.add_field(name=f"Jägerin", value=places) + embed.add_field(name=f"Emojis", value=scores) + await ctx.send("", embed=embed) + + @tasks.loop(seconds=1) + async def reaction_timer(self): + delete = [] + for message in self.messages: + if random.random() < 0.6: + if random.random() < 0.85: + await message.add_reaction(random.choice(self.data["reactions_add"])) + else: + await message.add_reaction(random.choice(self.data["reactions_remove"])) + + self.data["message_ids"].append(message.id) + delete.append(message) + self.save_data() + + if len(delete) > 0: + for message in delete: + self.messages.remove(message) + + async def cog_command_error(self, ctx, error): + await handle_error(ctx, error) diff --git a/fernuni_bot.py b/fernuni_bot.py index 5de2d9a6e5c1117553da2b23b7f430ff245ea092..fedc8c028722c19dc31c72a9ad4457757045f53a 100644 --- a/fernuni_bot.py +++ b/fernuni_bot.py @@ -4,7 +4,7 @@ import disnake from disnake.ext import commands from dotenv import load_dotenv -from cogs import appointments, calmdown, christmas, easter, github, help, learninggroups, links, \ +from cogs import appointments, calmdown, christmas, emoji_hunt, github, help, learninggroups, links, \ news, polls, roles, support, text_commands, voice, welcome, xkcd, module_information from view_manager import ViewManager @@ -35,7 +35,7 @@ class Boty(commands.Bot): self.add_cog(news.News(self)) self.add_cog(links.Links(self)) self.add_cog(voice.Voice(self)) - self.add_cog(easter.Easter(self)) + self.add_cog(emoji_hunt.EmojiHunt(self)) self.add_cog(learninggroups.LearningGroups(self)) self.add_cog(module_information.ModuleInformation(self)) self.add_cog(xkcd.Xkcd(self)) diff --git a/images/Botys_Profilbild_winter.png b/images/Botys_Profilbild_winter.png new file mode 100644 index 0000000000000000000000000000000000000000..01e48bc2ea3e59e910410ffdd4de1d50f1882147 Binary files /dev/null and b/images/Botys_Profilbild_winter.png differ