首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java制造的不和谐机器人分配角色?

如何使用Java制造的不和谐机器人分配角色?
EN

Stack Overflow用户
提问于 2018-04-23 02:28:19
回答 1查看 5.1K关注 0票数 0

我正试图让我的Meeseeks机器人为我的个人服务器分配和删除不和谐的角色。我不太熟悉特殊的方法和命令,我没有运气去寻找它!

这是我现在的代码

代码语言:javascript
复制
package discord.meeseeksBot;

import discord.meeseeksBot.Ref2;
import net.dv8tion.jda.core.AccountType;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;

public class App extends ListenerAdapter
{
    public static void main(String[] args) throws Exception
    {
        JDA jda = new 
        JDABuilder(AccountType.BOT).setToken(Ref2.token).buildBlocking();

        jda.addEventListener(new App());
    }

    @Override
    public void onMessageReceived(MessageReceivedEvent evt)
    {
        User objUser = evt.getAuthor();
        MessageChannel objMsgCh = evt.getChannel();
        Message objMsg = evt.getMessage();


        //the prefix to which the bot responds to is "Mr.Meeseeks, "
        if(objMsg.getContentRaw().equalsIgnoreCase(Ref2.prefix+"I need 
help"))
        {
            objMsgCh.sendMessage("Hi, " + objUser.getAsMention() + ", " +  " 
I'm Mr.Meeseeks! Look at me! How can I help?").queue();

            objMsgCh.sendMessage("You can tell me to **ADD** you to a role, 
or **REMOVE** you from a role!").queue();

        }

    }
}

我正在努力让机器人回复"Mr.Meeseeks,我需要帮助“的标题角色列表(这些角色没有层次化的目的,它们也不会与在线成员分开!)你可以从中选择,并向自己申请。我也希望他能把自己从角色中移开。

举个例子,我想到的是性别代词的角色(即“她/她”或“他/他”),这样当一个概要文件在服务器上被点击时,你就可以看到它们的名字。

所以你可以说,"Mr.Meeseeks,把我加到“她/她”的代词里!“他会为你这样做,或者"Mr.Meeseeks,把我从“她/她”代词中移除!“

我似乎无法用Java来理解它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 03:04:15

我不太熟悉JDA,因为Discord4J更好,但我可以指出正确的方向。

您希望使用regex测试"Mr“、"Meeseeks”、"add“和"me”的所有信息。然后你可以测试性别代词:

代码语言:javascript
复制
@Override
public void onMessageReceived(MessageReceivedEvent evt) {
    User objUser = evt.getAuthor();
    MessageChannel objMsgCh = evt.getChannel();
    Message objMsg = evt.getMessage();
    String content = objMsg.getContentRaw();
    Guild guild = evt.getGuild();

    //the prefix to which the bot responds to is "Mr.Meeseeks, "
    if (objMsg.getContentRaw().equalsIgnoreCase(Ref2.prefix + "I need help")) {
        objMsgCh.sendMessage("Hi, " + objUser.getAsMention() + ", " + " I'm Mr.Meeseeks! Look at me! How can I help?").queue();

        objMsgCh.sendMessage("You can tell me to **ADD** you to a role, or **REMOVE** you from a role!").queue();

    // Test for "Mr", "Meeseeks", "add", and "me".
    } else if (content.matches("^(?=.*\\badd\\b)(?=.*\\bme\\b)(?=.*\\bto\\b)(?=.*\\bMr\\b)(?=.*\\bMeeseeks\\b).+")) {
        // Test for pronouns (Assuming your roles names are "he/him" and "she/her")
        Role group = content.matches("((she)|(her))") ? guild.getRolesByName("she/her", true).get(0) :
            content.matches("((he)|(him))") ? guild.getRolesByName("he/him", true).get(0) : null;
        if (group == null) {
            // Let the user know if they used an invalid pronoun.
            objMsgCh.sendMessage("Sorry " + objUser.getAsMention() + ", I can't find that role!").queue();
        } else {
            // Assign the role.
            guild.getController().addRolesToMember​(guild.getMember(objUser), group);
            objMsgCh.sendMessage("Added " + objUser.getAsMention() + " to " + group.getName() + "!").queue();
        }
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49972619

复制
相关文章

相似问题

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