我有一个问题,我试图使用Java不和谐API(JDA)编写机器人代码。当新用户加入服务器时,机器人应该发送一条消息,但我的代码不起作用。代码:
public class UserJoinModule extends ListenerAdapter {
public void onGuildMemberJoined(GuildMemberJoinEvent event) throws LoginException {
String user = event.getMember().getAsMention();
JDA client = new JDABuilder("awesome token").build();
final List<TextChannel> channels = client.getTextChannelsByName("awesome channel name", true);
for (final TextChannel ch : channels) {
ch.sendMessage("New member joined: " + user).queue();
}
}
}
有人能告诉我怎么了吗?
对我来说,问题不是来自我重写的侦听器和方法。我相信您必须添加网关意图。帮会成员
到您的JDABuilder。
builder.enableIntents(GatewayIntent.GUILD_MEMBERS);
这为我解决了同样的问题。
您的代码中有两个问题。
以下是您想要做的:
public class UserJoinModule extends ListenerAdapter {
@Override
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
Guild guild = event.getGuild(); // Get the guild that the user joined.
User user = event.getUser(); // Get the user that joined.
JDA client = event.getJDA(); // Get the already existing JDA instance.
List<TextChannel> channels = guild.getTextChannelsByName("awesome channel name", true); // Get the list of channels in the guild that matches that name.
for (TextChannel channel : channels) { // Loops through the channels and sends a message to each one.
channel.sendMessage("New member joined: " + user).queue();
}
}
}
您的代码应该如下所示:
public class UserJoinModule extends ListenerAdapter {
@Override // USE THIS WHEN YOU WANT TO OVERRIDE A METHOD
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
String user = event.getMember().getAsMention();
JDA client = event.getJDA(); // DO NOT CREATE A NEW JDA INSTANCE EVERY TIME
List<TextChannel> channels = client.getTextChannelsByName("awesome channel name", true);
for (TextChannel ch : channels) {
ch.sendMessage("New member joined: " + user).queue();
}
}
}
您必须在JDABuilder
实例中注册此侦听器,最好在整个代码库中只有一个侦听器。请参见addEventListeners
。
我在使用Discord。js创建一个基本的Discord机器人。当bot第一次启动时,我运行获取机器人当前订阅的所有协会的列表。我将其保存到其他程序使用的数据库中。 然而,当人们从他们的公会中添加/删除机器人时,我想保留一个更新的公会列表。我意识到我可以每分钟重新运行,但这似乎效率低下。 当你的机器人被添加到公会和/或频道时,是否有触发的事件?据我所知,事件似乎针对所有已经订阅该公会的用户/机器人
我希望能够运行以开始的命令!suspend,提到一个用户,然后确定一个时间长度,并在指定的时间长度内向提到的用户添加一个名为“suspend”的角色。 我不知道该怎么做,因为我对JDA太不熟悉,无法让它工作。除了实际添加的名为“暂停”的角色之外,我的一切都正常。
编辑:我想知道我是否添加了错误的bot?bot与用户的OAuth 2位于同一应用程序上。此bot添加了以下内容:https://discordapp.com/oauth2/authorize?client_id={我的id} 我与Discord有OAuth2连接,使用https://github.com/wohali/oauth2-discord-new这将返回discord用户和我的访问令牌。它
我希望我的Discord机器人在成员加入频道时向他们致意。我一直找不到在这种情况下触发的事件。我试过我的客户。UserJoined=MyMethod 谢谢,如果我能提供更多的信息,请告诉我。 编辑:建议的链接实现了用户加入事件,该事件似乎仅在新成员加入频道时触发。我需要每次有人登录频道时触发的东西,即使是现有成员。
我有一个用例,我想将a作为JSON到我的服务,然后服务应该注册一个新用户(使用给定的和自动生成的密码)。 数据 我正在使用,我面临的问题是: 每当我尝试HTTP 用户名时,服务已经要求身份验证(用户名和密码)。这不是我想要的原因。我希望注册 API 是完全公开的。这意味着每个人(未经授权)都可以一个新的用户名,从而“打开帐户”。 我不确定我怎样才能达到想要的行为。服务的一部分应该是公共的(就像上面
本文向大家介绍Ubuntu 添加新用户,包括了Ubuntu 添加新用户的使用技巧和注意事项,需要的朋友参考一下 示例 adduser命令将用户添加到系统。为了添加新的用户类型: 例: 键入上述命令后,将提示您输入有关新用户的详细信息,例如新密码,用户全名等。 以下是要求用户填写以添加新用户的信息: