discord.js-selfbot-v13中clickButton不是函数的报错问题
相关代码
const { Client, clickButton } = require('discord.js-selfbot-v13'); const client = new Client({ checkUpdate: false, }); client.on('ready', async () => { const channelId = '1190781950944886870'; const channel = client.channels.cache.get(channelId); if (channel) { console.log(`Channel found: ${channel.name}`); const message_id = await channel.sendSlash('999736048596816014', 'config channel', channelId); console.log('Slash Command Sent! | '+message_id) await message_id.clickButton() } else { console.error('Channel not found.'); } }); client.login('my token');
报错信息
await message_id.clickButton() ^ TypeError: message_id.clickButton is not a function
问题说明
调用message_id.clickButton()时触发上述报错,但官方文档显示clickButton()是Message对象的可用方法。
原因分析
channel.sendSlash()方法的返回值是消息ID字符串,而非完整的Message实例对象。字符串类型不存在clickButton()方法,因此报错。
解决方案
需要先通过消息ID获取对应的Message实例,再调用clickButton()方法:
修改代码中发送slash命令后的部分:
const message_id = await channel.sendSlash('999736048596816014', 'config channel', channelId); console.log('Slash Command Sent! | '+message_id) // 通过ID获取Message对象 const targetMessage = await channel.messages.fetch(message_id); // 调用clickButton方法 await targetMessage.clickButton();
另外,代码中导入的clickButton是多余的,可以删除,因为该方法是Message实例的内置方法,无需单独导入。
内容的提问来源于stack exchange,提问作者user23184304
相关产品推荐
相关产品推荐

