1010from discord import Activity , Forbidden , Intents , Member , Message , NotFound
1111from discord .ext .commands import Bot , CommandError , Context , ExtensionAlreadyLoaded
1212from dotenv import load_dotenv
13+ from httpx import ConnectError
1314
1415from byte_bot .byte .lib import settings
1516from byte_bot .byte .lib .log import get_logger
2324load_dotenv ()
2425
2526
26- async def on_member_join (member : Member ) -> None :
27- """Handle member join event.
28-
29- Args:
30- member: Member object.
31- """
32- await member .send (
33- f"Welcome to { member .guild .name } ! Please make sure to read the rules if you haven't already. "
34- f"Feel free to ask any questions you have in the help channel."
35- )
36-
37-
3827class Byte (Bot ):
3928 """Byte Bot Base Class."""
4029
@@ -113,10 +102,11 @@ async def on_member_join(member: Member) -> None:
113102 Args:
114103 member: Member object.
115104 """
116- await member .send (
117- f"Welcome to { member .guild .name } ! Please make sure to read the rules if you haven't already. "
118- f"Feel free to ask any questions you have in the help channel."
119- )
105+ if not member .bot :
106+ await member .send (
107+ f"Welcome to { member .guild .name } ! Please make sure to read the rules if you haven't already. "
108+ f"Feel free to ask any questions you have in the help channel."
109+ )
120110
121111 async def on_guild_join (self , guild : discord .Guild ) -> None :
122112 """Handle guild join event.
@@ -127,17 +117,34 @@ async def on_guild_join(self, guild: discord.Guild) -> None:
127117 await self .tree .sync (guild = guild )
128118 api_url = f"http://0.0.0.0:8000/api/guilds/create?guild_id={ guild .id } &guild_name={ guild .name } "
129119
130- async with httpx .AsyncClient () as client :
131- response = await client .post (api_url )
132-
133- if response .status_code == httpx .codes .CREATED :
134- logger .info ("successfully added guild %s (ID: %s)" , guild .name , guild .id )
135- else :
136- logger .error (
137- "%s joined guild '%s' but was not added to database" ,
138- self .user .name if self .user else "Bot" ,
139- guild .name ,
140- )
120+ try :
121+ async with httpx .AsyncClient () as client :
122+ response = await client .post (api_url )
123+
124+ if response .status_code == httpx .codes .CREATED :
125+ logger .info ("successfully added guild %s (id: %s)" , guild .name , guild .id )
126+ embed = discord .Embed (
127+ title = "Guild Joined" ,
128+ description = f"Joined guild { guild .name } (ID: { guild .id } )" ,
129+ color = discord .Color .green (),
130+ )
131+ else :
132+ embed = discord .Embed (
133+ title = "Guild Join Failed" ,
134+ description = f"Joined guild, but failed to add guild { guild .name } (ID: { guild .id } ) to database" ,
135+ color = discord .Color .red (),
136+ )
137+
138+ if dev_guild := self .get_guild (settings .discord .DEV_GUILD_ID ):
139+ if dev_channel := dev_guild .get_channel (settings .discord .DEV_GUILD_INTERNAL_ID ):
140+ if hasattr (dev_channel , "send" ):
141+ await dev_channel .send (embed = embed ) # type: ignore[attr-defined]
142+ else :
143+ logger .error ("dev channel not found." )
144+ else :
145+ logger .error ("dev guild not found." )
146+ except ConnectError :
147+ logger .exception ("failed to connect to api to add guild %s (id: %s)" , guild .name , guild .id )
141148
142149
143150def run_bot () -> None :
0 commit comments