错误:
C:\Users\dudew\Documents\LolaV2\Commands\Moderation\rules.js:30
const collector = message.createReactionCollector({ filter, time: 15000 });
^
TypeError: message.createReactionCollector is not a function代码:
const { MessageEmbed, MessageReaction } = require('discord.js');
module.exports = {
name: 'rules',
description: 'Server Rules',
permission: "ADMINISTRATOR",
/**
*
* @param {MessageReaction} message
*/
execute(message) {
const rulemebed = new MessageEmbed()
.setColor('#ffc7fe')
.setTitle('Server Rules')
.setDescription('Please click the check mark ✅ to verfiy that you read the rules and gain access to other channels')
.setFooter('Abusing loop holes will result in fair punishment ')
.addFields(
{name: '#1', value:'...',},
);
message.channel.send({ embeds: [rulemebed] }).then((sentMessage) => {
sentMessage.react("✅");
});
const filter = (reaction, user) => {
return reaction.emoji.name === '✅' && user.id === message.author.id;
};
const collector = message.createReactionCollector({ filter, time: 15000 });
collector.on('collect', async(reaction, user) => {
const role = await message.guild.roles.fetch("916861450281156678");
message.guild.members.fetch(user.id).then(member => {
member.roles.add(role);
member.roles.remove("916929706182459392");
});
});
}
}代码工作得很好,直到我添加了反应收集器,从第25行开始,目标是当有人点击表情符号"✅“时,他们将扮演一个角色。我使用的是discord.js v13和node.js v16.13.0
Console.log(信息):
type: 'APPLICATION_COMMAND',
id: '917209298331914321',
applicationId: '914385514910584863',
channelId: '916857940214939659',
guildId: '521495211474550795',
user: User {
id: '241673282254929920',
bot: false,
system: false,
flags: UserFlags { bitfield: 128 },
username: 'Aka Slim',
discriminator: '4848',
avatar: '37832e1616afa1ae62ffb489abaf819c',
banner: undefined,
accentColor: undefined
},
member: GuildMember {
guild: Guild {
id: '521495211474550795',
name: 'Backdoors',
icon: '015fe350ce1549589bc98d260da3d972',
features: [Array],
commands: [GuildApplicationCommandManager],
members: [GuildMemberManager],
channels: [GuildChannelManager],
bans: [GuildBanManager],
roles: [RoleManager],
presences: PresenceManager {},
voiceStates: [VoiceStateManager],
stageInstances: [StageInstanceManager],
invites: [GuildInviteManager],
deleted: false,
available: true,
shardId: 0,
splash: null,
banner: null,
description: null,
verificationLevel: 'LOW',
vanityURLCode: null,
nsfwLevel: 'DEFAULT',
discoverySplash: null,
memberCount: 4,
large: false,
applicationId: null,
afkTimeout: 300,
afkChannelId: null,
systemChannelId: '916857940214939660',
premiumTier: 'NONE',
premiumSubscriptionCount: 0,
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 'NONE',
joinedTimestamp: 1638077405431,
defaultMessageNotifications: 'ONLY_MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 250000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLUses: null,
rulesChannelId: '916857940214939659',
publicUpdatesChannelId: '916857940214939660',
preferredLocale: 'en-US',
ownerId: '241673282254929920',
emojis: [GuildEmojiManager],
stickers: [GuildStickerManager]
},
joinedTimestamp: 1544404547421,
premiumSinceTimestamp: null,
deleted: false,
nickname: 'Slim ',
pending: false,
_roles: [
'523520902286147584',
'523520896443613185',
'916929706182459392',
'916861450281156678',
'523520575419973642',
'523520815665381386',
'914383272505671700'
],
user: User {
id: '241673282254929920',
bot: false,
system: false,
flags: [UserFlags],
username: 'Aka Slim',
discriminator: '4848',
avatar: '37832e1616afa1ae62ffb489abaf819c',
banner: undefined,
accentColor: undefined
},
avatar: null
},
version: 1,
memberPermissions: Permissions { bitfield: 2199023255551n },
commandId: '916934450712051753',
commandName: 'rules',
deferred: false,
replied: false,
ephemeral: null,
webhook: InteractionWebhook { id: '914385514910584863' },
options: CommandInteractionOptionResolver {
_group: null,
_subcommand: null,
_hoistedOptions: []
}
}发布于 2021-12-07 17:17:51
根据console.log的输出,您的message变量实际上是一个CommandInteraction,它没有createReactionCollector方法。
仔细看看您的代码,您似乎想要听取您发送的一条新消息的反应,其中包含了复选标记。因此,您的代码应该如下所示:
const { MessageEmbed, MessageReaction } = require("discord.js");
module.exports = {
name: "rules",
description: "Server Rules",
permission: "ADMINISTRATOR",
/**
*
* @param {CommandInteraction} interaction
*/
execute(interaction) {
const rulemebed = new MessageEmbed()
.setColor("#ffc7fe")
.setTitle("Server Rules")
.setDescription("Please click the check mark ✅ to verfiy that you read the rules and gain access to other channels")
.setFooter("Abusing loop holes will result in fair punishment")
.addFields(
{ name: "#1", value: "..." },
);
interaction.channel.send({ embeds: [rulemebed] }).then((sentMessage) => {
sentMessage.react("✅");
const filter = (reaction, user) => {
return reaction.emoji.name === "✅" && user.id === interaction.user.id;
};
const collector = sentMessage.createReactionCollector({ filter, time: 15000 });
collector.on("collect", async (reaction, user) => {
const role = await interaction.guild.roles.fetch("916861450281156678"),
{ member } = interaction;
member.roles.add(role);
member.roles.remove("916929706182459392");
});
});
}
}https://stackoverflow.com/questions/70238804
复制相似问题