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