首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >createReactionCollector不是函数错误

createReactionCollector不是函数错误
EN

Stack Overflow用户
提问于 2021-12-05 21:42:06
回答 1查看 218关注 0票数 0

错误:

代码语言:javascript
复制
C:\Users\dudew\Documents\LolaV2\Commands\Moderation\rules.js:30
        const collector = message.createReactionCollector({ filter, time: 15000 });
                                  ^

TypeError: message.createReactionCollector is not a function

代码:

代码语言:javascript
复制
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(信息):

代码语言:javascript
复制
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: []
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 17:17:51

根据console.log的输出,您的message变量实际上是一个CommandInteraction,它没有createReactionCollector方法。

仔细看看您的代码,您似乎想要听取您发送的一条新消息的反应,其中包含了复选标记。因此,您的代码应该如下所示:

代码语言:javascript
复制
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");
      });
    });
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70238804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档