如何按名称查找包含表情符号 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 的频道?的主要内容,如果未能解决你的问题,请参考以下文章