Как исправить не работающего дискорд-бота? Java-языкJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как исправить не работающего дискорд-бота? Java-язык

Сообщение Anonymous »

Недавно я создал бота для Discord с помощьюchatgpt на языке Java. Бот запущен и находится в сети на сервере Discord, но не делает то, что я хочу. Цель состоит в том, чтобы поприветствовать кого-то, когда он подключается к серверу. Бот этого не делает. Я не знаю, что-то не так в коде или я неправильно настроил его на сервере. Я могу упомянуть, что у бота включены разрешения: (Намерение присутствия, Намерение участников сервера и Намерение содержимого сообщения). Я также думаю, что у меня есть последние версии Maven, JDA и т. д. Я хорошо разбираюсь в программировании, поэтому считаю, что это логические ошибки, но кому мне об этом говорить, пожалуйста, посмотрите, и я буду благодарен :)
Это мой Java-файл и файл pom.xml

Код: Выделить всё

import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.events.user.update.UserUpdateOnlineStatusEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.requests.GatewayIntent;

import javax.security.auth.login.LoginException;

public class OnlineTrackerBot extends ListenerAdapter
{

public static void main(String[] args) throws LoginException {
String token = "my_token";  // Replaced with my bot token

JDABuilder builder = JDABuilder.createDefault(token);
builder.enableIntents(GatewayIntent.GUILD_PRESENCES, GatewayIntent.GUILD_MEMBERS, GatewayIntent.MESSAGE_CONTENT);  // Enable necessary intents
builder.addEventListeners(new OnlineTrackerBot());
System.out.println("Event listeners added.");
builder.build();
}

@Override
public void onUserUpdateOnlineStatus(UserUpdateOnlineStatusEvent event) {
System.out.println("Received UserUpdateOnlineStatusEvent for user: " + event.getUser().getName());

// Get the member whose presence updated
Member member = event.getGuild().getMember(event.getUser());
if (member == null) {
System.out.println("Member not found in the guild.");
return;
}
System.out.println("Member found: " + member.getEffectiveName());

// Check if the member's status is now ONLINE
if (event.getNewOnlineStatus() == OnlineStatus.ONLINE) {
// Get the general channel (replace with your actual channel name)
TextChannel generalChannel = event.getGuild().getTextChannelsByName("inte-dansband-förhelvete", true).get(0);

// Send a welcome message in the general channel
if (generalChannel != null) {
System.out.println("Sending message to channel: " + generalChannel.getName());
generalChannel.sendMessage("Welcome back online, " + member.getAsMention() + "!").queue();
} else {
System.out.println("General channel not found.");
}
}
}
}
Файл Pom.xml

Код: Выделить всё

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0

me.Carllundholm
OnlineTrackerBot
1.0-SNAPSHOT
jar

OnlineTrackerBot
http://maven.apache.org


UTF-8




net.dv8tion
JDA
5.1.0 



org.junit.jupiter
junit-jupiter-api
5.9.3
test


org.junit.jupiter
junit-jupiter-engine
5.9.3
test


org.slf4j
slf4j-api
2.0.9

Заранее спасибо!
Я пытался изменить разные методы и версии JDA, потому что много раз получаю сообщение: невозможно разрешить символ или не могу разрешить метод.

Подробнее здесь: https://stackoverflow.com/questions/789 ... -java-lang
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»