#前提・実現したいこと
discord.jsでロール管理パネルを作ろうとしています。
パネル自体は先にembedで作ってあり、
それを送信した後にチャンネルIDとメッセージIDを取得してプログラムに書き込む感じです。
そしてそのメッセージのリアクションにのみ反応するコードを作ろうとしたのですがエラーが出ました。
#該当のソースコード
js
1const discord = require('discord.js'); 2const client = new discord.Client({ partials: ['MESSAGE', 'CHANNEL', 'REACTION', 'USER', 'GUILD_MEMBER'] }); 3const { token } = require('./config.json'); 4client.login(token); 5 6const handleReaction = async (channelID, messageID, callback) => { 7 const channel = await client.channels.fetch(channelID) 8 const message = await channel.messages.fetch(messageID) 9 const collector = message.createReactionCollector(() => true) 10 collector.on('collect', (reaction, user) => callback(reaction, user)) 11 } 12 13client.on('ready', () => { 14 15 handleReaction('チャンネルID取得後に記入', 'メッセージID取得後に記入', (reaction, user) => { 16 if (reaction.emoji.name === '????') { 17 reaction.message.guild.member(user).roles.add('ロールID:1') 18 } 19 if (reaction.emoji.name === '????') { 20 reaction.message.guild.member(user).roles.add('ロールID:2') 21 } 22 }) 23})
#発生している問題
エラーメッセージ
console
1 const message = await channel.messages.fetch(messageID) 2 ^ 3 4ReferenceError: channel is not defined 5 at Client.<anonymous> (/Users/user/bot/bots/server.js:136:19) 6 at Client.emit (node:events:402:35) 7 at MessageReactionAdd.handle (/Users/user/bot/bots/node_modules/discord.js/src/client/actions/MessageReactionAdd.js:49:17) 8 at Object.module.exports [as MESSAGE_REACTION_ADD] (/Users/user/bot/bots/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js:4:37) 9 at WebSocketManager.handlePacket (/Users/user/bot/bots/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31) 10 at WebSocketShard.onPacket (/Users/user/bot/bots/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22) 11 at WebSocketShard.onMessage (/Users/user/bot/bots/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10) 12 at WebSocket.onMessage (/Users/user/bot/bots/node_modules/ws/lib/event-target.js:132:16) 13 at WebSocket.emit (node:events:390:28) 14 at Receiver.receiverOnMessage (/Users/user/bot/bots/node_modules/ws/lib/websocket.js:983:20) 15
#試したこと
Clientにpartialsの追加
Intentsの変更など
(どちらも効果がありませんでした。)
#バージョン
discord.js: 12.5.2
node: 16.11.1
npm: 8.0.0
#参考サイト
https://scrapbox.io/discordjs-japan/固定メッセージへのリアクションに反応して役職を付けるサンプル
回答1件
あなたの回答
tips
プレビュー