如何按名称查找包含表情符号 Discord 的频道?

Posted

技术标签:

【中文标题】如何按名称查找包含表情符号 Discord 的频道?【英文标题】:how can i find channel by name which includes emoji Discord? 【发布时间】:2020-01-29 01:57:22 【问题描述】:

我使用const channel = member.guild.channels.find(ch => ch.name === `welcome`); 代码来获取简单的频道名称,上面写着欢迎,但当同一频道包含表情符号????welcome???? 我如何找到表情符号 ????welcome???? 这个或任何其他表情符号中的任何频道。

const channel = member.guild.channels.find(ch => ch.name === `welcome`); // some code here channel.send(`See you once again $member!`, attachment);

类似的东西,但我试过了,但不起作用

const channel = member.guild.channels.find(ch => ch.name === ????welcome????); 我的服务器看起来像这样my server with channel name and emojis

我的完整代码是这样的-

    const channel = member.guild.channels.find(ch => ch.name === `welcome`);
    if (!channel) return;
    const canvas = Canvas.createCanvas(700, 250);
    const ctx = canvas.getContext('2d');

    const background = await Canvas.loadImage('./wallpaper.jpg');
    ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

    ctx.strokeStyle = '#74037b';
    ctx.strokeRect(0, 0, canvas.width, canvas.height);

    // Slightly smaller text placed above the member's display name
    ctx.font = '28px sans-serif';
    ctx.fillStyle = '#ffffff';
    ctx.fillText('Welcome to the server,', canvas.width / 2.5, canvas.height / 3.5);

    // Add an exclamation point here and below
    ctx.font = applyText(canvas, `$member.displayName!`);
    ctx.fillStyle = '#ffffff';
    ctx.fillText(`$member.displayName!`, canvas.width / 2.5, canvas.height / 1.8);

    ctx.beginPath();
    ctx.arc(125, 125, 100, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.clip();

    const avatar = await Canvas.loadImage(member.user.displayAvatarURL);
    ctx.drawImage(avatar, 25, 25, 200, 200);

    const attachment = new Discord.Attachment(canvas.toBuffer(), 'welcome-image.png');

    channel.send(`Welcome to the server, $member!`, attachment);

假设我需要像上图那样找到关卡通道,表情符号会改变,但名称会在那里,所以我该怎么做 这是我要添加的数据 编辑 欢迎使用名称,但是当我添加表情符号时,名称会发生​​变化

'554141970130403338' => TextChannel 
    type: 'text',
    deleted: false,
    id: '554141970130403338',
     name: '📜welcome📜',
    position: 0,
    parentID: '566212268208029697',
    permissionOverwrites: Collection [Map] 
      '159985870458322944' => [PermissionOverwrites],
      '417208237142573056' => [PermissionOverwrites],
      '487733104652582920' => [PermissionOverwrites]
    ,
    topic: '',
    nsfw: false,
    lastMessageID: '628112146806472715',
    lastPinTimestamp: null,
    rateLimitPerUser: 0,
    guild: Guild 
      members: [Collection [Map]],
      channels: [Circular],
      roles: [Collection [Map]],
      presences: [Collection [Map]],
      deleted: false,
      available: true,
      id: '417208237142573056',
      name: 'ETHYT Gaming',
      icon: '081568475c94dd5724dafc2547a0261c',
      splash: null,
      region: 'india',
      memberCount: 86,
      large: false,
      features: [],
      applicationID: null,
      afkTimeout: 3600,
      afkChannelID: '440842028713115648',
      systemChannelID: null,
      embedEnabled: undefined,
      verificationLevel: 0,
      explicitContentFilter: 0,
      mfaLevel: 0,
      joinedTimestamp: 1557471391163,
      defaultMessageNotifications: 'ALL',
      ownerID: '348832732647784460',
      _rawVoiceStates: [Collection [Map]],
      emojis: [Collection [Map]]
    ,
    messages: Collection [Map]  '628112146806472715' => [Message] ,
    _typing: Map 
  

当我在记事本中得到输出时,我可以看到欢迎词,但是之前和之后呢?

【问题讨论】:

【参考方案1】:

String.includes() 对你很有用。它不会比较整个字符串,而是在其中的任何位置搜索您的子字符串。

const channelName = '?welcome?';
console.log(channelName.includes('welcome'));

【讨论】:

先生,我添加了我要添加的数据,请查看它 @Root android 您可以在谓词函数中使用String.includes() 找到频道。 ...channels.find(ch => ch.name.includes('welcome'))。这不是你要问的吗? 谢谢,现在我明白了我在学习,这是我自己的项目,我制作了一个具有多个 api 和功能的全功能不和谐机器人,所以我需要你在附近功能方面的帮助【参考方案2】:

您可以使用const channel = member.guild.channels.get('554141970130403338'); 和“554141970130403338”作为频道 ID。

【讨论】:

现在我也知道了,但主要原因是它会发送到多个服务器,所以我需要在这里获取 id,你输入了 id,这意味着它只会发送到该服务器通道而不是其他服务器: (

以上是关于如何按名称查找包含表情符号 Discord 的频道?的主要内容,如果未能解决你的问题,请参考以下文章

Discord bot 未按名称查找频道

Discord JS - 如何对同一个嵌入做出多次反应?

无法从反应中读取标准表情符号名称 [discord.js]

来自 Java 的 Discord Webhook 消息中的表情符号和特殊字符不起作用

在单独的频道中对机器人自己的消息的表情符号反应

如何在 C# if 语句中使用 Discord 表情符号