問題描述
我在用戶連接到我的服務器時向他們發送消息,我想通過點擊反應繼續授權.
我怎樣才能創建這個?我正在使用以下代碼:
I send messages to users when they connect to my server, and I want to continue authorization by clicking on reactions.
How can I create this? I'm using the following code:
robot.on("guildMemberAdd", (gMembAdd) =>
{
gMembAdd.send(`Hi ${gMembAdd.toString()} welcome to the server Test`).then(msg => {
msg.react('?')
.then(() => msg.react('?'));
//--------------------Developmend-------------------------------------
let filter = (reaction, user) => reaction.emoji.name === '?' || reaction.emoji.name === '?';
let col = msg.createReactionCollector(filter);
col.on('collect', r =>
{
if (r.users.last().id !== msg.author.id)
{
gMembAdd.addRole(gMembAdd.guild.roles.find("name", "Autorize")).catch(console.error)
r.remove(r.users.last().id);
console.log(` ${gMembAdd.user.id} и ${gMembAdd.user.username} and ${r.emoji}`);
}
});
//--------------------------------------------------------------------
});
如果反應是肯定的,我需要進行反應檢查和角色分配,否則就踢.我不明白如何繼續.
I need a reaction check and role assignment if the response is positive and kick if not. I don't understand how to continue.
這段代碼會正確使用嗎?
Will this code be used correctly?
推薦答案
要檢查反應,您可以使用 MesssageReaction.emoji.name
,就像你在上面所做的那樣.
對于另一件事,您可以使用 GuildMember.addRole()
&GuildMember.kick()
.
以下是您可以查看的示例:
To check the reaction you can use MesssageReaction.emoji.name
, as you did above.
For the other thing, you can use GuildMember.addRole()
& GuildMember.kick()
.
Here's a sample you can check out:
robot.on('guildMemberAdd', async member => {
let msg = await member.send(`Hi ${member} welcome to the server Test`);
await msg.react('?');
await msg.react('?');
msg.createReactionCollection(r => ['?', '?'].includes(r.emoji.name))
.on('collect', r => {
if (r.emoji.name == '?')
member.addRole(member.guild.roles.find("name", "Authorize"))
.then(() => { console.log(`Added ${member.user.username} (${member.id}).`); })
.catch(console.error);
else if (r.emoji.name == '?') member.kick("You got rejected.");
r.remove(r.users.last());
});
});
您還可以使用 消息.awaitReactions()
,這樣比較好,因為加了reaction之后就不繼續了:
You can also use Message.awaitReactions()
, which is better because it doesn't go on after the reaction is added:
robot.on('guildMemberAdd', async member => {
let msg = await member.send(`Hi ${member} welcome to the server Test`);
await msg.react('?');
await msg.react('?');
msg.awaitReactions(r => ['?', '?'].includes(r.emoji.name), {max: 1})
.then(collected => {
let r = collected.first();
if (r.emoji.name == '?')
member.addRole(member.guild.roles.find("name", "Authorize"))
.then(() => { console.log(`Added ${member.user.username} (${member.id}).`); })
.catch(console.error);
else if (r.emoji.name == '?') member.kick("You got rejected.");
r.remove(r.users.last())
});
});
這篇關于如何在 guildMemberAdd 中使用 awaitReactions的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!