当前位置: 首页 > 知识库问答 >
问题:

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

田晨
2023-03-14

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

这是我现在的代码;

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();

        }

    }
}

我正在努力让机器人回复“先生”Meeseeks,我需要帮助”与标题角色列表(这些角色没有等级目的,也不会与在线成员分开出现!)你可以选择,并适用于自己。我也希望他能够让自己脱离一个角色。

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

所以你可以说,“米先生,把我加到”她/她的“代词中!”他会为你这么做,或者说“Meesek先生,把我从“她/她的”代词中删除!”。

对于Java,我似乎无法理解。

共有1个答案

宗政招
2023-03-14

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

您希望使用regex测试同一消息中的“Mr”、“Meeseeks”、“add”和“me”。然后你可以测试性别代词:

@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();
        }
    }
}
 类似资料:
  • 我正在尝试使用discord删除已创建的角色,该角色使用的是。js。 终端中的错误显示: DiscordAPIError:缺少权限 虽然我已经给了我的机器人所有权限。 代码:

  • 我已经创建了一个bot,它现在在我的discord服务器中,使用下面的代码。 我的问题是,一旦我在与bot不和谐的聊天中,我如何调用命令让bot运行代码,为用户列表收集csv?我不确定如何调用机器人,一旦它在聊天/服务器中获得列表。

  • Bot只是不工作:/Bot没有给出任何错误

  • 我对用JavaScript编码非常陌生,我正在尝试为我计划在不和谐服务器中的事件创建一个非常简单的机器人。 基本上,如果所提到的成员在数组中没有角色集,那么它应该做的就是将角色分配给所提到的成员(仅第一个成员)。 虽然代码本身不会抛出任何错误(机器人登录并打印就绪状态),但每当我试图召唤机器人时,它都不会做任何事情。我认为我的技能不够好,不能自己解决这个问题,所以任何帮助都将受到高度赞赏!谢谢!

  • 我正在使用discord制作discord机器人。py和asyncio。bot有像和这样的命令,这显然不应该对普通用户可用。 我想制作一个简单的系统,它将使用以获取发送命令的用户。 我不希望bot检测到特定的角色名称,因为这些名称在不同的服务器上有所不同。我也不希望机器人有多个文件来保持简单。 我看到了不和谐。py文档和各种其他来源,但没有一个包含如何实现他们所讨论的各种方法的示例。 举个例子,这

  • 当有人加入语音频道时,如何制作一个标记为@角色的discord机器人?示例:@role{user}已加入