Discord.js 向特定频道发送消息

问题描述 投票:0回答:5

我没能实现一些非常简单的事情。我无法向特定频道发送消息。我浏览了有关堆栈溢出的文档和类似线程。

client.channels.get().send()

不工作。 它不是一个函数。 我也不认为它是官方文档中 Channel 类的方法,但到目前为止我发现的每个线程都告诉我要使用它。

我设法让机器人通过收听消息然后使用

message.reply()
来回复消息,但我不想那样。我希望我的机器人在
client.on('ready')

的特定频道中说些什么

我错过了什么?

node.js bots send discord.js
5个回答
39
投票

你没有提供任何你已经测试过的代码,所以我会给你你准备好的事件的代码!

    client.on('ready', client => {
        client.channels.get('CHANNEL ID').send('Hello here!');
    })

注意你的频道 ID 是一个字符串。

让我知道它是否有效,谢谢!

2020年6月13日编辑:

Discord.js 更新需要

cache
通道成员在 get 方法之前。

如果你的模块是遗留的,上面的仍然有效。我最近的解决方案可以按如下方式更改发送行。

        client.channels.cache.get('CHANNEL ID').send('Hello here!')

如果您使用的是 TypeScript,则需要转换通道才能使用

TextChannel.send(message)
方法而不会出现编译器错误。

import { TextChannel } from 'discord.js';

( client.channels.cache.get('CHANNEL ID') as TextChannel ).send('Hello here!')

6
投票

对于 v12 它将是以下内容:

  client.on('messageCreate', message => {
        client.channels.cache.get('CHANNEL ID').send('Hello here!');
    })

编辑:我将其更改为记录消息。


2
投票

这将适用于最新版本的 node.js

msg.guild.channels.cache.find(i => i.name === 'announcements').send(annEmbed)


2
投票

应该工作

client.channels.fetch('CHANNEL_ID')
    .then(channel=>channel.send('booyah!'))

0
投票

以下是我每次删除消息时向特定频道发送消息的方式。如果您想在没有频道 ID 的情况下发送消息,这将很有帮助。

client.on("messageDelete", (messageDelete) => {
  const channel = messageDelete.guild.channels.find(ch => ch.name === 'channel name here');
  channel.send(`The message : "${messageDelete.content}" by ${messageDelete.author} was deleted. Their ID is ${messageDelete.author.id}`);
}); 

如果您不使用 messageDelete,请务必定义它。

© www.soinside.com 2019 - 2024. All rights reserved.