Discord机器人临时禁言命令报错:TypeError: user.timeout is not a function
问题原因
你报错的核心原因是:interaction.user.id返回的是字符串类型的用户ID,而timeout()是Discord.js中GuildMember(服务器成员)对象的方法,字符串没有这个方法,所以触发TypeError。
解决方法
要调用timeout(),你需要获取当前命令使用者的GuildMember实例,而不是单纯的用户ID。修改代码如下:
const Discord = require("discord.js"); module.exports = { name: 'cramptés', description: 'quoi ? t\'as les cramptés ?', permission: 'Aucune', dm: false, category: 'Utilitaire', async run(bot, interaction, args) { await interaction.reply({ content: `C'est dommage d'avoir les cramptés`, ephemeral: true, components: [] }); // 替换为GuildMember实例 const member = interaction.member; // 调用timeout方法,参数:禁言时长(毫秒),原因 await member.timeout(600000, "fallait pas avoir les cramptés"); } }
额外注意事项
- 确保你的机器人拥有管理成员(Manage Members)的权限,否则
timeout()会执行失败。 - 因为
timeout()是异步方法,记得加上await关键字,避免未完成操作就结束函数。
内容的提问来源于stack exchange,提问作者AirZoma
相关产品推荐
相关产品推荐

