下面是用Discord.js编写的不和谐机器人的代码片段:
client.channels.fetch('channelID here').then(function (channel) {
channel.messages.fetch('messageID here').then(function (message) {
console.log(message.reactions.cache.get('EmojiID here').users);
});
});
它在控制台中获得以下输出:
ReactionUserManager {
cacheType: [class Collection extends Collection],
cache: Collection [Map] {},
reaction: MessageReaction {
message: Message {
channel: [TextChannel],
deleted: false,
id: 'MessageID here',
type: 'DEFAULT',
system: false,
content: 'What role do you want?\n' +
'React with:\n' +
'<:Red:870224025811558450> for <@&870162738561814578> \n' +
'<:Blue:870224213976444959> for <@&870162842983206922> \n' +
'<:Yellow:870224106061172776> for <@&870162885412810773>\n' +
'You will be assigned the role corresponding to your most recent reaction.\n' +
'Unreact to remove the role.',
author: [User],
pinned: false,
tts: false,
nonce: null,
embeds: [],
attachments: Collection [Map] {},
createdTimestamp: 1627548937713,
editedTimestamp: 1627617831107,
reactions: [ReactionManager],
mentions: [MessageMentions],
webhookID: null,
application: null,
activity: null,
_edits: [],
flags: [MessageFlags],
reference: null
},
me: true,
users: [Circular],
_emoji: ReactionEmoji {
animated: undefined,
name: 'Red',
id: 'EmojiID here',
deleted: false,
reaction: [Circular]
},
count: 2
}
}
我可以在输出中看到计数:2
。我想得到这两个用户的对象列表。如何做到这一点?
你是如此接近ReactionUserManager
是一个经理;这意味着它有一个缓存
属性,返回用户
对象的集合。
您还可以获取用户:
client.channels.fetch('channelID').then(function (channel) {
channel.messages.fetch('messageID').then(function (message) {
const reaction = message.reactions.cache.get('EmojiID')
reaction.users.fetch().then(function (users) {
console.log(users)
})
})
})
如果可以使用async await(即,您使用的是异步函数),则可以使其更具可读性:
const channel = await client.channels.fetch('channelID')
const message = await channel.messages.fetch('messageID')
const reaction = message.reactions.cache.get('EmojiID')
const users = await reaction.users.fetch()
console.log(users)
// e.g. add a role to each user
users.each(async (user) => {
// get the member object as users don't have roles
const member = await message.guild.members.fetch(user.id)
member.roles.add('ROLE ID')
})
我有问题得到反应角色的工作与自定义表情符号。如果我使用不和谐表情符号,它会嵌入消息,创建反应,并在点击反应时应用角色。 然而,如果我使用一个自定义的emoji,它会嵌入消息并创建正确的反应,但是它不提供当emoji被点击时的角色。 我使用了相同的编码,当交换不和谐和自定义的表情符号,唯一的改变是表情符号的ID。 我使用的完整代码是: 我们将非常感谢对此提供任何帮助。
问题内容: 如果我有一个水果列表,其中包含各种实现,如,等。该列表是必需的,因为其他方法会对列表中的所有水果执行常规操作。 如何将特定类型的所有对象从列表中删除?例如所有的苹果?进行instanceof / if-else检查非常难看,尤其是在有许多不同的类时。 如何改善以下内容? 问题答案: 您应该知道-实例是不好的代码实践。 编写.getType()(返回的对象的枚举类型)怎么办?
问题内容: 我有一个简单的pojos(一个用户类)的列表,其中包含约15个简单字段和1个arrayList。这些代表用户,可能会将100或1000个用户存储在内存中,以避免每次都从外部系统检索它们。(我正在使用Ehcache) 我想通过junit测试知道K个用户列表使用了多少内存。 我的直觉是,即使像一千个这样的简单pojo也不会以任何方式威胁(换言之,小于100 Ko) 在此先感谢您的协助。我非
在机器人发送消息后,我想要一个表情符号反应。下面的代码仅在我键入命令后执行。例如,以下是一些示例输出: 输出不正确: 用户输入:规则显示表情反应机器人消息 正确输出:用户输入:规则Bot消息显示有表情反应
问题内容: 说我有一个对象列表,其中包含两个字段和,均为String类型。 如果有可能,如何在不迭代列表的情况下获取所有值的列表? 问题答案: 对象是对内存地址的引用。然后,该对象的字段是指向其他内存地址的其他引用。因此,对象列表是引用列表。因此,列表不可能直接访问对象字段(由引用给出的引用)。最简洁的答案是不。 注意:无论如何,您都会找到可以实现所需功能的API,但该API仍在内部循环。
我在网上找不到任何关于这个话题的东西。有没有办法告诉你的机器人对旧消息做出反应?类似的东西: 1-烤面包机:嘿 2-乔纳森:!!反应 会让机器人对烤面包机说“嘿”做出反应吗?或者做一些更老的事情,比如对消息作出反应5条消息向上。我没有这方面的代码,但我知道不和谐。js很好,并且知道如何正常地向消息添加反应。