2017-10-01 6 views
2

Je suis en train de coder un bot de discordance, et je veux qu'il envoie un message à un canal par défaut du serveur quand le bot rejoint un nouveau serveur.Discord.NET Guild.DefaultChannel ne fonctionne pas

Voici mon code

client.JoinedGuild += async guild => 
{ 
var channel = guild.DefaultChannel; 
await channel.SendMessageAsync("test"); 
}; 

L'erreur se produit sur channel.SendMessageAsync, et quand je débogués le programme, il continue de montrer que channel est nulle, même si j'ai un canal par défaut dans mon serveur.

Répondre

3

Une mise à jour de discorde a été supprimée il y a plusieurs mois defaultChannel. Ce qui signifie que les serveurs n'ont plus besoin d'un canal par défaut.
(Vous pouvez même supprimer tous les canaux de votre serveur!)

Cela signifie également que la propriété Guild.DefaultChannel ne fonctionnera plus comme prévu.
(corrigez-moi si je me trompe, mais si un serveur a toujours un canal #general, la propriété fonctionnera comme prévu.)

Discord.NET v2 + ont une propriété DefaultChannel de travail. (Il utilise son propre ensemble d'algorithmes pour déterminer quel serait le canal par défaut de la guilde.)

Le code source de l'algorithme est here. (Ligne 66-69)

En regardant l'algorithme, vous voudrez peut-être faire preuve de prudence en l'utilisant, si votre bot a la permission d'envoyer des messages partout, la propriété DefaultChannel sera simplement le premier canal dans la liste des canaux du serveur .
(Et ce serait une mauvaise nouvelle si c'était un canal readme)