首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >discord.js向特定信道发送消息

discord.js向特定信道发送消息
EN

Stack Overflow用户
提问于 2019-12-10 18:52:53
回答 3查看 5.4K关注 0票数 1

我一直在寻找,似乎找不到这个问题的答案,我正在与一个不和谐的机器人,我正在与打字稿。我的所有命令都在它们自己的文件夹中,每个命令使用一个单独的文件。有助于使事情组织起来。

我见过有人说client.channels.get(`channelID`).send(`Text`)

但这给了我Object is possibly 'undefined'.Property 'send' does not exist on type 'Channel'.

实际上,每当有人运行重新启动命令时,我都会尝试在每个文本通道(从列表中)创建一个bot消息,因为不管出于什么原因,人们总是重新启动机器人。如果有人需要使用它,我会时不时地把它作为一个巨魔来实现,这是一件有趣的事情。该机器人离线3分钟,但我不喜欢让人垃圾邮件,而且基本上有机器人无法使用。

我用的是client.channels.get(channels.channelnames[5]).send("This is a message.")

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-11 19:57:23

解决方案:

代码语言:javascript
运行
复制
if(msgObject.member.guild.channels.find(channel => channel.name === channels.channelnames[5]) as Discord.TextChannel) {
    var txtchannel = msgObject.member.guild.channels.find(channel => channel.name === channels.channelnames[5]) as Discord.TextChannel
    txtchannel.send("This is a message in a channel. Don't know why you read this.")
}

所以我基本上是在正确的轨道上。我想这就是辛西娅为什么要把变量转换成一个as Discord.TextChannel的原因

这个密码起作用了。谢谢你们的帮助!

票数 2
EN

Stack Overflow用户

发布于 2019-12-10 19:05:34

根据https://discord.js.org/#/docs/main/stable/class/Collection的说法,似乎没有get方法。

试试client.channels[channels.channelnames[5]].send("This is a message.")

换句话说,尝试用方括号替换.get。

编辑:对不起,我太快了,我想问题是类型转换,如果你知道Channel是一个文本通道,试着把它转换成一个TextChannel

票数 1
EN

Stack Overflow用户

发布于 2019-12-10 19:43:18

假设你的频道是文本频道,这应该是可行的。

代码语言:javascript
运行
复制
client.on('ready',(e)=>{


    let channel_ids = ['123','456','789'];

    // loop through the list of channel ids.
    for(let i=0, l=channel_ids.length; i<l; i++){
        let channel_id = channel_ids[i];

        let this_channel = client.channels.get( channel_id );

        // if exists, and type in list send message
        if(this_channel && ['dm', 'group', 'text'].indexOf( this_channel.type ) != -1){
            this_channel.send('a cool message')
            .then(message => console.log(`Sent message: ${message.content}`))
            .catch(console.error);
        }

    }

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59273659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档