我目前正在使用此代碼來檢查用戶發送的訊息數量,但這種方法非常慢,為每個用戶計算需要 1 - 2 分鐘
user = discord.utils.find(lambda m: m.id== j, channel.guild.members)
async for message in channel.history(limit = 100000):
if message.author == user:
userMessages.append(message.content)
print(len(userMessages))
有沒有其他快速方法可以做到這一點?
uj5u.com熱心網友回復:
統計訊息
您可以使用on_message事件來計算訊息。
message_count = {}
@client.event
async def on_message(message):
global message_count
if message.guild.id not in message_count:
message_count[message.guild.id] = {}
try:
message_count[message.guild.id][message.author.id] = 1
except KeyError:
message_count[message.guild.id][message.author.id] = 1
client.process_commands(message)
然后使用
member = something # specify member here
try:
count = message_count[member.guild.id][member.id]
except KeyError:
count = 0
# now `count` is count of messages from `member`
獲取來自成員的訊息計數。
注意:訊息計數會在您的機器人重新啟動時重置,但此解決方案會很快起作用。
資料庫
另一種方法是使用任何資料庫來存盤來自不同成員的訊息計數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367458.html
