25
25
from bot .database import store
26
26
from bot .utils import did_you_mean , get_close_matches
27
27
from bot .utils .datetimes import EASTERN , utcnow
28
- from bot .utils .discord import THEME_COLOR
28
+ from bot .utils .discord import THEME_COLOR , display_name
29
29
from bot .utils .gsheets import get_gsheet_client
30
30
from bot .utils .ui import LinkView
31
31
@@ -494,6 +494,7 @@ def make_role_table_age(self, guild: Guild):
494
494
async def on_message (self , message : Message ) -> None :
495
495
if message .guild and message .guild .id != settings .SIGN_CAFE_GUILD_ID :
496
496
return
497
+ # Store when introductions were posted, for autokick functionality
497
498
if message .channel .id == settings .SIGN_CAFE_INTRODUCTIONS_CHANNEL_ID :
498
499
if await store .has_sign_cafe_intro (message .author .id ):
499
500
logger .debug (f"{ message .author .id } already has intro" )
@@ -504,6 +505,7 @@ async def on_message(self, message: Message) -> None:
504
505
user_id = message .author .id ,
505
506
posted_at = message .created_at ,
506
507
)
508
+ # Suggest using /top instead of -topic
507
509
if message .content .strip () == "-topic" :
508
510
with suppress (disnake .errors .Forbidden ):
509
511
embed = disnake .Embed (
@@ -517,6 +519,12 @@ async def on_message(self, message: Message) -> None:
517
519
color = disnake .Color .yellow (),
518
520
)
519
521
await message .author .send (embed = embed )
522
+ # Autothreading
523
+ if message .channel .id in settings .SIGN_CAFE_AUTOTHREAD_CHANNEL_IDS :
524
+ await message .create_thread (
525
+ name = f"{ display_name (message .author )} - { message .created_at :%H·%M %b %d} " ,
526
+ auto_archive_duration = disnake .ThreadArchiveDuration .day ,
527
+ )
520
528
521
529
@Cog .listener ()
522
530
async def on_member_remove (self , member : Member ) -> None :
0 commit comments