44import asyncio
55from pymongo import MongoClient
66from discord .ext import commands
7+ import re
78
89# Add src directory to sys.path for imports
910sys .path .insert (0 , os .path .dirname (__file__ ))
@@ -39,6 +40,7 @@ def setup_db():
3940 unique = True ,
4041 partialFilterExpression = {"message_id" : {"$exists" : True }},
4142 )
43+ bot .db .messages .create_index ("reply_to" )
4244
4345 # TTL Index: 30日後に自動的に削除
4446 bot .db .messages .create_index ("timestamp" , expireAfterSeconds = 30 * 24 * 60 * 60 )
@@ -89,6 +91,13 @@ async def on_message(message):
8991
9092 roles = message .author .roles
9193
94+ reply_to = None
95+ if message .reference :
96+ reply_to = str (message .reference .message_id )
97+
98+ emoji_pattern = r"<a?:\w+:\d+>"
99+ emojis = re .findall (emoji_pattern , message .content )
100+
92101 data = {
93102 "message_id" : str (message .id ),
94103 "guild_id" : str (message .guild .id ),
@@ -100,6 +109,12 @@ async def on_message(message):
100109 "content" : message .content ,
101110 "timestamp" : message .created_at .isoformat (),
102111 "role_ids" : [str (role .id ) for role in roles ] if roles else [],
112+ "reply_to" : reply_to ,
113+ "mentions" : [str (user .id ) for user in message .mentions ],
114+ "attachments" : [a .url for a in message .attachments ],
115+ "length" : len (message .content ),
116+ "emoji_count" : len (emojis ),
117+ "url_count" : len (message .content .split ("http" )),
103118 }
104119
105120 bot .db .messages .insert_one (data )
0 commit comments