私は不和ボットのより詳細なロギングシステムに取り組んでいます、そしてこれは私が現在持っているものです:
client.on('message', message => {
if (message.author.bot) return; //don't log its own messages
const channel = client.channels.cache.get('805457298867879936'); //sent logs to this channel
channel.send(
`${message.author} in ${message.channel} of ${message.guild} said ${message.content}`, //log in discord channel
);
console.log(
`${message.author.tag} in #${message.channel.name} of ${message.guild.name} said: ${message.content}`, //log in console
);
client.login(token); //login
このコードは、ボットが特定のチャネルと私のコンソールで見ることができる送信されたメッセージをログに記録します。ただし、送信したメッセージへのメッセージリンクも必要です。たとえば、これは私が現在記録しているものです:Kingamezz#02XX in #testing of Testing Server said: test
そして私が欲しいのはこれです:Kingamezz#02XX in #testing of Testing Server said: test (https://discord.com/channels/763786268181397524/805457298867879936/805502804134330448)
それで私はメッセージに直接ジャンプすることができます。
メッセージのメッセージリンクを取得する方法がわかりません。discordjsのドキュメントにはメッセージリンクについて何も記載されていないようです。私はこれを試しました:
channel.send(
"https://discord.com/channels/" + guild.id + "/" + message.id
)
しかし、それは「ギルドが定義されていない」という結果になります。私はこれを正しい方法で行っていますか?
の.url
プロパティを使用しMessage
て、次のようにジャンプできるURLを取得できます。
channel.send(message.url);
ドキュメント:https://discord.js.org/#/docs/main/master/class/Message?scrollTo = url
さらに、現在のコードが機能しない理由は、ギルドオブジェクトがなく、メッセージオブジェクトしかないためです。したがって、ギルドのプロパティにアクセスするには、最初にメッセージオブジェクトからギルドを取得する必要があります。したがって、現在のコードを使い続けたい場合は、次のこともできます。
channel.send(
"https://discord.com/channels/" + message.guild.id + "/" + message.guild.id
)
ただし、2番目の解決策で注意すべきことの1つは、メッセージがダイレクトメッセージの場合、メッセージがギルドで送信されなかったためにエラーが発生する可能性があることです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加