Skip to content

Commit 5fc8cbf

Browse files
committed
notes
1 parent bb6b5b2 commit 5fc8cbf

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

storage/notes.json

Whitespace-only changes.

tux/cogs/utility/note.py

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import discord
2+
from discord import app_commands
3+
from discord.ext import commands
4+
from loguru import logger
5+
import json
6+
import pathlib as path
7+
from tux.utils.constants import Constants as CONST
8+
Path = path.Path
9+
storage_file = Path("config/settings.json")
10+
storage = json.loads(storage_file.read_text())
11+
12+
13+
class Note(commands.Cog):
14+
def __init__(self, bot: commands.Bot) -> None:
15+
self.bot = bot
16+
group = app_commands.Group(name="note", description="Note Commands")
17+
@staticmethod
18+
def create_embed(
19+
title: str = "", description: str = "", color: int = CONST.COLORS["SUCCESS"]
20+
) -> discord.Embed:
21+
"""Utility method for creating a basic embed structure."""
22+
embed = discord.Embed(title=title, description=description, color=color)
23+
embed.set_author(name="Info", icon_url="https://cdn3.emoji.gg/emojis/3228-info.png")
24+
return embed
25+
26+
@group.command(name="write", description="")
27+
28+
async def write(self, interaction: discord.Interaction, user: discord.Member, note: str):
29+
user_id = user.id
30+
data = {
31+
"user": user_id,
32+
"note": note
33+
34+
35+
}
36+
37+
embed = self.create_embed("Note Added", f"Note added for {user.display_name}")
38+
39+
40+
with Path.open(storage_file, "w") as file:
41+
json.dump(data,file, indent=4)
42+
logger.info("Note added")
43+
await interaction.response.send_message(embed=embed)
44+
45+
@group.command(name="read", description="")
46+
async def read(self, interaction: discord.Interaction, user: discord.Member):
47+
user_id = user.id
48+
with Path.open(storage_file, "r") as file:
49+
data = json.load(file)
50+
user_note = next((entry["note"] for entry in data if entry["user"] == user_id), None)
51+
52+
if user_note:
53+
embed = self.create_embed(
54+
title="Note Found",
55+
description=f"Note for {user.display_name}: {user_note}",
56+
color=CONST.COLORS["INFO"]
57+
)
58+
await interaction.response.send_message(embed=embed)
59+
else:
60+
embed = self.create_embed(
61+
title="Note Not Found",
62+
description=f"No note found for {user.display_name}",
63+
color=CONST.COLORS["ERROR"],
64+
65+
)
66+
await interaction.response.send_message(embed=embed)
67+
@group.command(name="delete", description="Delete a note.")
68+
async def delete(self, interaction: discord.Interaction, user: discord.Member):
69+
user_id = user.id
70+
with Path.open(storage_file, "r") as file:
71+
data = json.load(file)
72+
updated_data = [entry for entry in data if entry["user"] != user_id]
73+
if len(data) == len(updated_data):
74+
embed = self.create_embed(
75+
title="Note Delete Error",
76+
description=f"No note found for {user.display_name}!",
77+
color=CONST.COLORS["ERROR"]
78+
)
79+
logger.error("Note delete error - Note not found")
80+
await interaction.response.send_message(embed=embed)
81+
else:
82+
with Path.open(storage_file, "w") as file:
83+
json.dump(updated_data, file, indent=4)
84+
85+
embed = self.create_embed(
86+
title="Note Deleted",
87+
description=f"Note deleted for {user.display_name}.",
88+
color=CONST.COLORS["SUCCESS"]
89+
)
90+
logger.info("Note deleted")
91+
await interaction.response.send_message(embed=embed)
92+
93+
94+
95+
96+
97+
98+
99+
100+
async def setup(bot: commands.Bot) -> None:
101+
await bot.add_cog(Note(bot))

0 commit comments

Comments
 (0)