0
votes

Comment écrire un coup de pied avec la fonction de raison pour mon bot

J'essaie de rendre mon code frappe les gens avec une raison et des DM qui disent qu'ils ont été frappés de pour le . À la minute, cela n'envoie pas une raison.

regardé des tutoriels en ligne mais pas de chance. J'ai aussi demandé à certaines personnes mais elles ne savaient pas non plus. Semble pas beaucoup de gens utilisent discorde.js, toute aide serait grandement appréciée. =)

Message Bot envoie message que j'ai envoyé xxx


2 commentaires

Sont des erreurs lancées?


Mes erreurs: Pastebin.com/nywdhv8x (Je ne peux pas coller ici aussi longtemps) @slothiful


3 Réponses :


1
votes

Votre bot pourrait ne pas être capable d'utiliser les utilisateurs de DM après avoir été frappé en raison de leurs paramètres de confidentialité. Parce que l'utilisateur a été lancé, ils ne partagent plus de serveur avec le bot (sauf s'il s'agit d'un bot très globalement utilisé, ce qui augmenterait les chances que l'utilisateur se trouve dans plusieurs serveurs à l'aide du bot, qui signifie que la probabilité que le bot soit Neuvable d'envoyer un DM à cet utilisateur, est très élevé.


2 commentaires

Il utilise réellement membre.send ("msg"). Ensuite ((Message) => {membre.kick (raison) ..}) Il envoie donc le message, puis des coups de pied, mais tu es toujours droite, les utilisateurs peuvent bloquer le bot / ont leurs paramètres sur autoriser les DMS d'amis uniquement, et le bot ne peut pas envoyer le DM


Je le testais sur mon Alt (un compte non réclamé sur une onglet Incognito) et des messages pourraient être envoyés entre l'utilisateur un bot. @PLASMA



-2
votes

Ci-dessous n'est pas la réponse, l'utilisateur et le membre ont les deux .Send ()

L'erreur dans votre code est membre.send () . Vous voyez, membre et utilisateur sont deux choses différentes . .send () ne fonctionne que avec un utilisateur , vous devez donc faire membre.user.send () , et cela fonctionnera.
En outre, vous aurez besoin d'une prise pour cette promesse. Donc, si cet utilisateur a désactivé DM est désactivé, car le bot ne peut pas dm l'utilisateur s'il l'a désactivé. Quelque chose comme: xxx

garder à l'esprit, attendre est une autre manière de chaînage puis dans async fonction.


5 commentaires

Ce n'est pas vrai: GuildMember # Envoyer


Ce code ne fonctionne pas. Il manque 2 crochets, j'ai essayé de les ajouter, mais il a donné l'erreur suivante Pastebin.com/bepg3ji4 ( Pastebin aussi longtemps pour poster ici)


Vous devez mettre ce code dans une fonction Async. Changer client.on ('message', message => { à client.on ("message", async message => {, assurez-vous que ASYNC est avant le message.


HM ne semblait toujours pas fonctionner. Voici la pâtebine des erreurs Pastebin.com/rkjq60pu et voici mon code Pastebin.com/fy6wznag Merci. =)


Bonjour, Je l'ai fait pour que cela fonctionne . Pour moi, ce nouveau code fonctionne.



2
votes

Explication:

En regardant vos erreurs, c'est la chronologie des problèmes. P>

  1. La source de tout cela est que le bot ne peut pas envoyer de DM au membre en raison des paramètres de confidentialité forts> dans la guilde ( ici ). Cela se traduit par membre.send (...) code> être rejeté. Li>
  2. Étant donné que cette promesse rejetée n'est pas attrapée, le code continue avec .Chen () code> Renvoyer rien au lieu du message Evendu code>. Li>
  3. Lorsque vous essayez de lire la propriété displayName code> de Message.Member code>, il jette une erreur car votre paramètre message code> n'a jamais été retourné. OL>

    Solution: H3>

    Implémenter un .Catch () CODE> Méthode sur Poignée de la possibilité de la promesse rejetée forte>. P>.

    N'oubliez pas que vous devez déclarer votre fonction comme ASYNC d'utiliser attendre code>: p> xxx pré>

    puis, dans votre commande: p>

    await member.send(`You have been kicked from \`${message.guild.name}\`. Reason: \`${reason}\``)
      .catch(err => message.channel.send(`âš  Unable to alert ${member} of reason.`));
    
    await member.kick(reason);
    await message.channel.send(`👋 ${member} has been kicked!`);
    
    console.log(`${message.author.tag} kicked ${member.user.tag} from '${message.guild.name}'.`);
    


4 commentaires

Il est également digne de noter que vous devez ajouter une limite de caractères à la raison pour laquelle le message de la raison ne dépasse pas 2 000 caractères.


Merci beaucoup! Cela a fonctionné. Cependant, lorsque la raison contient plus de 1 mot, cela se produit imgur.com/a/vwkuqkf (mon code est Pastebin.com/bjjn9mqe ) Savez-vous comment je peux résoudre ce problème?


Lorsque vous déclarez raison , vous devez ajouter .join ('') à la fin.


Bonne réponse, BTW @wastefulglint Si vous souhaitez configurer une belle structure de commande, consultez: discordjs.guide/command-handling/#individual-command-files