2017-06-29 1 views
0

Je ne sais pas comment gérer pour créer une fonction ou quelque chose qui vérifie quand un utilisateur n'envoie rien à un serveur discord dans un laps de temps et kick cet utilisateur pour être inactif. Ce n'est pas comme les utilisateurs de l'élagage, parce que l'élagage va kicker les utilisateurs qui ne se sont pas connectés à ce moment-là. J'utilise discord.py de Rapptz, mais vous pouvez me donner (si possible) un exemple dans le wrapper que vous voulez.Kick "fantômes" utilisateurs dans Discord

Répondre

1

Si vous êtes en réécriture, vous pouvez utiliser l'itérateur asynchrone history pour trouver le dernier message de l'utilisateur.

Documentation

Exemple de 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 

Une autre méthode serait de garder une trace d'un horodatage du « dernier message envoyé » dans un JSON ou de toute autre base de données en utilisant l'événement on_message(). Ensuite, vous pouvez exécuter une commande pour purger ou le faire toutes les X secondes.

Ce dernier serait probablement idéal si vous n'utilisez pas la réécriture ou si le serveur que vous utilisez a beaucoup de membres.

Si vous utilisez on_message pour gérer l'horodatage, vous pouvez la mettre en œuvre comme celui-ci

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

Merci, je vais essayer ce moment. – Killer

+0

Je ne voulais pas vous déranger, mais, im nouveau à cette API et je ne savais pas où je suis supposé "mettre" ce code. Si je le mets dans le @ bot.event pour chaque message, il montre une erreur. si je mets ceci dans on_ready, cela montre aussi une erreur. J'ai essayé de rechercher des exemples, etc, mais peu satisfaisant. – Killer

+1

Désolé pour la réponse tardive. Je ne sais pas si vous suivez toujours ce sujet, mais vous ne devriez pas le mettre pour l'événement on_ready, car il ne fonctionnera qu'au démarrage. Vous devriez utiliser l'événement 'on_message' ou entrer une commande. Si vous me montrez votre code, cela m'aidera à résoudre votre problème. – xNinjaKittyx