web-dev-qa-db-ja.com

discord.jsの特定のチャネルにメッセージを送信するにはどうすればよいですか?

READ EDIT ATボトム、質問全体を変更します。

はい、私は人々がこれを以前に聞いたことがあることを知っています。しかし、私は機能し、廃止されていない解決策を見つけることができません。これが、複製しようとしている特定の機能を操作するために必要なコードの一部です。

const Discord = require('discord.js');
const bot = new Discord.Client();
const client = bot

const token = 'NunyaBuisness';
const channel = '525723958239852735' // Not a real channel ID
const PREFIX = '.';

bot.on('message', msg=>{
    let args = msg.content.substring(PREFIX.length).split(" ");
    switch(args[0]){
        case 'process':
            if(args[1] === 'test'){
                var testGuild = new Discord.Guild(bot, 'serverID');
                var testTextChannel = new Discord.TextChannel(testGuild, channel);
                testTextChannel.send("Test");
            }
        break;
    }
})

ボットはメッセージで以下を返します

。プロセステスト

B:\bot\node_modules\discord.js\src\structures\Guild.js:152
    this.large = Boolean('large' in data ? data.large : this.large);
                                 ^

TypeError: Cannot use 'in' operator to search for 'large' in serverID
    at Guild._patch (B:\bot\node_modules\discord.js\src\structures\Guild.js:152:34)
    at new Guild (B:\bot\node_modules\discord.js\src\structures\Guild.js:92:12)
    at Client.<anonymous> (B:\bot\index.js:101:33)
    at Client.emit (events.js:311:20)
    at MessageCreateAction.handle (B:\bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (B:\bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (B:\bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (B:\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:435:22)
    at WebSocketShard.onMessage (B:\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (B:\bot\node_modules\ws\lib\event-target.js:120:16)

ご協力いただきありがとうございます!ほんとうにありがとう。私は自分でドキュメントを使用してこれを数日間解決しようとしましたが、常に失敗します。

[〜#〜]編集[〜#〜]

問題は、メソッドCLIENT.channels.get( 'id')が文字通り存在しないことだと思います。これは地獄のように奇妙であり、GitHubを調べて、何か足りないものがないか確認しています。この時点で、私は絶対に何も欠けているのを見ません。これは超奇妙です。これまでのご協力に感謝します。

2
user8385393

Discord v12の変更:

msg.guild.channels.get(myChannel)からmsg.guild.channels.cache.get(myChannel)

let myChannel = '123213123'

    bot.on('message', msg=>{
        let args = msg.content.substring(PREFIX.length).split(" ");
        switch(args[0]){
            case 'process':
                if(args[1] === 'test'){
                    let targetChannel = msg.guild.channels.get(myChannel)
                    if (targetChannel) targetChannel.send('sssss')
                }
            break;
        }
    })
4
Cipher