2017-06-29 170 views
0

我不知道如何設法創建一個函數或者什麼東西來驗證用戶在一段時間內不向任何不和服務器發送任何東西,並且踢這個用戶是無效的。它不像修剪用戶,因爲修剪會踢在那個時候沒有登錄的用戶。在Discord中踢「鬼魂」的用戶

我使用Rapptz的discord.py,但是你可以給我(如果可能的話)一個你想要的封裝的例子。

回答

1

如果您正在重寫,您可以使用history異步迭代器來查找用戶的最後一條消息。

Documentation

從文檔

counter = 0 
# Limit is not required, but can make this a really slow operation if you don't use it. 
async for message in channel.history(limit=200): 
    if message.author == client.user: 
     counter += 1 

實施例的另一種方法將是保持在JSON或使用on_message()事件的任何其他數據庫中的「發送最後消息」的時間戳的軌道。然後,您可以執行一個命令來清除或每X秒執行一次。

如果你不使用重寫或者你使用的服務器有很多成員,後者可能是理想的。

如果您使用on_message處理時間戳,可以實現像這樣

@bot.event 
async def on_message(msg): 
    # GET user (msg.author) and edit their timestamp on database 
+0

謝謝你,我現在試試這個權利。 – Killer

+0

我不想打擾你,但是,即時通訊新的這個API,我不知道我在哪裏「放」這個代碼。如果我把它放在每個消息的@ bot.event中,它會顯示一個錯誤。如果我把它放在on_ready中,它也會顯示錯誤。我試圖搜索例子等,但不太成功。 – Killer

+1

對不起,延遲迴復。我不知道你是否仍然在關注這個線程,但是你不應該把它放在on_ready事件上,因爲它只能在啓動時運行。你應該使用'on_message'事件或者一些命令。如果你向我展示你的代碼,它會幫助我解決你的問題。 – xNinjaKittyx