Search in sources :

Example 16 with User

use of org.pircbotx.User in project downlords-faf-client by FAForever.

the class PircBotXChatServiceTest method testChatMessageEventTriggeredByPrivateMessage.

@Test
public void testChatMessageEventTriggeredByPrivateMessage() throws Exception {
    CompletableFuture<ChatMessage> chatMessageFuture = new CompletableFuture<>();
    doAnswer(invocation -> chatMessageFuture.complete(((ChatMessageEvent) invocation.getArgument(0)).getMessage())).when(eventBus).post(any());
    String message = "private message";
    User user = mock(User.class);
    when(user.getNick()).thenReturn(chatUser1.getUsername());
    connect();
    firePircBotXEvent(createPrivateMessageEvent(user, message));
    ChatMessage chatMessage = chatMessageFuture.get(TIMEOUT, TIMEOUT_UNIT);
    assertThat(chatMessage.getMessage(), is(message));
    assertThat(chatMessage.getSource(), is(chatUser1.getUsername()));
    assertThat(chatMessage.getUsername(), is(chatUser1.getUsername()));
    assertThat(chatMessage.getTime(), is(greaterThan(Instant.ofEpochMilli(System.currentTimeMillis() - 1000))));
    assertThat(chatMessage.isAction(), is(false));
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) User(org.pircbotx.User) ChatMessageEvent(com.faforever.client.chat.event.ChatMessageEvent) Test(org.junit.Test) AbstractPlainJavaFxTest(com.faforever.client.test.AbstractPlainJavaFxTest)

Example 17 with User

use of org.pircbotx.User in project downlords-faf-client by FAForever.

the class PircBotXChatService method onPrivateMessage.

private void onPrivateMessage(PrivateMessageEvent event) {
    User user = event.getUser();
    if (user == null) {
        logger.warn("Private message without user: {}", event);
        return;
    }
    logger.debug("Received private message: {}", event);
    Player sourcePlayer = playerService.getPlayerForUsername(user.getNick());
    if (sourcePlayer != null && sourcePlayer.getSocialStatus() == SocialStatus.FOE && preferencesService.getPreferences().getChat().getHideFoeMessages()) {
        log.debug("Suppressing chat message from foe '{}'", user.getNick());
        return;
    }
    eventBus.post(new ChatMessageEvent(new ChatMessage(user.getNick(), Instant.ofEpochMilli(event.getTimestamp()), user.getNick(), event.getMessage())));
}
Also used : Player(com.faforever.client.player.Player) User(org.pircbotx.User) ChatMessageEvent(com.faforever.client.chat.event.ChatMessageEvent)

Example 18 with User

use of org.pircbotx.User in project downlords-faf-client by FAForever.

the class PircBotXChatService method onAction.

private void onAction(ActionEvent event) {
    User user = event.getUser();
    if (user == null) {
        logger.warn("Action event without user: {}", event);
        return;
    }
    String source;
    org.pircbotx.Channel channel = event.getChannel();
    if (channel == null) {
        source = user.getNick();
    } else {
        source = channel.getName();
    }
    eventBus.post(new ChatMessageEvent(new ChatMessage(source, Instant.ofEpochMilli(event.getTimestamp()), user.getNick(), event.getMessage(), true)));
}
Also used : User(org.pircbotx.User) ChatMessageEvent(com.faforever.client.chat.event.ChatMessageEvent)

Example 19 with User

use of org.pircbotx.User in project downlords-faf-client by FAForever.

the class PircBotXChatService method postConstruct.

@PostConstruct
void postConstruct() {
    eventBus.register(this);
    fafService.addOnMessageListener(SocialMessage.class, this::onSocialMessage);
    connectionState.addListener((observable, oldValue, newValue) -> {
        switch(newValue) {
            case DISCONNECTED:
            case CONNECTING:
                onDisconnected();
                break;
        }
    });
    addEventListener(NoticeEvent.class, this::onNotice);
    addEventListener(ConnectEvent.class, event -> connectionState.set(ConnectionState.CONNECTED));
    addEventListener(DisconnectEvent.class, event -> connectionState.set(ConnectionState.DISCONNECTED));
    addEventListener(UserListEvent.class, event -> onChatUserList(event.getChannel().getName(), chatUsers(event.getUsers())));
    addEventListener(JoinEvent.class, event -> onUserJoinedChannel(event.getChannel().getName(), getOrCreateChatUser(event.getUser())));
    addEventListener(PartEvent.class, event -> onChatUserLeftChannel(event.getChannel().getName(), event.getUser().getNick()));
    addEventListener(QuitEvent.class, event -> onChatUserQuit(event.getUser().getNick()));
    addEventListener(TopicEvent.class, event -> getOrCreateChannel(event.getChannel().getName()).setTopic(event.getTopic()));
    addEventListener(MessageEvent.class, this::onMessage);
    addEventListener(ActionEvent.class, this::onAction);
    addEventListener(PrivateMessageEvent.class, this::onPrivateMessage);
    addEventListener(MotdEvent.class, this::onMotd);
    addEventListener(OpEvent.class, event -> {
        User recipient = event.getRecipient();
        if (recipient != null) {
            onModeratorSet(event.getChannel().getName(), recipient.getNick());
        }
    });
    ChatPrefs chatPrefs = preferencesService.getPreferences().getChat();
    chatPrefs.userToColorProperty().addListener((MapChangeListener<? super String, ? super Color>) change -> preferencesService.store());
    chatPrefs.chatColorModeProperty().addListener((observable, oldValue, newValue) -> {
        synchronized (chatUsersByName) {
            switch(newValue) {
                case CUSTOM:
                    chatUsersByName.values().stream().filter(chatUser -> chatPrefs.getUserToColor().containsKey(chatUser.getUsername().toLowerCase(US))).forEach(chatUser -> chatUser.setColor(chatPrefs.getUserToColor().get(chatUser.getUsername().toLowerCase(US))));
                    break;
                case RANDOM:
                    for (ChatUser chatUser : chatUsersByName.values()) {
                        chatUser.setColor(ColorGeneratorUtil.generateRandomColor(chatUser.getUsername().hashCode()));
                    }
                    break;
                default:
                    for (ChatUser chatUser : chatUsersByName.values()) {
                        chatUser.setColor(null);
                    }
            }
        }
    });
}
Also used : UserOfflineEvent(com.faforever.client.player.UserOfflineEvent) GenericEvent(org.pircbotx.hooks.types.GenericEvent) FXCollections.observableHashMap(javafx.collections.FXCollections.observableHashMap) StringUtils.containsIgnoreCase(org.apache.commons.lang3.StringUtils.containsIgnoreCase) TopicEvent(org.pircbotx.hooks.events.TopicEvent) LoggerFactory(org.slf4j.LoggerFactory) Irc(com.faforever.client.config.ClientProperties.Irc) ConnectionState(com.faforever.client.net.ConnectionState) HIGH(com.faforever.client.task.CompletableTask.Priority.HIGH) SocialMessage(com.faforever.client.remote.domain.SocialMessage) MotdEvent(org.pircbotx.hooks.events.MotdEvent) PreDestroy(javax.annotation.PreDestroy) Task(javafx.concurrent.Task) CUSTOM(com.faforever.client.chat.ChatColorMode.CUSTOM) SimpleIntegerProperty(javafx.beans.property.SimpleIntegerProperty) Map(java.util.Map) RANDOM(com.faforever.client.chat.ChatColorMode.RANDOM) ChatPrefs(com.faforever.client.preferences.ChatPrefs) PircBotX(org.pircbotx.PircBotX) PlayerService(com.faforever.client.player.PlayerService) ClientProperties(com.faforever.client.config.ClientProperties) LoggedOutEvent(com.faforever.client.user.event.LoggedOutEvent) FafClientApplication(com.faforever.client.FafClientApplication) UserOnlineEvent(com.faforever.client.player.UserOnlineEvent) NoticeEvent(org.pircbotx.hooks.events.NoticeEvent) MapChangeListener(javafx.collections.MapChangeListener) MethodHandles(java.lang.invoke.MethodHandles) UpdateApplicationBadgeEvent(com.faforever.client.ui.tray.event.UpdateApplicationBadgeEvent) JoinEvent(org.pircbotx.hooks.events.JoinEvent) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ObservableMap(javafx.collections.ObservableMap) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) String.format(java.lang.String.format) Player(com.faforever.client.player.Player) CountDownLatch(java.util.concurrent.CountDownLatch) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) DisconnectEvent(org.pircbotx.hooks.events.DisconnectEvent) ReadOnlyIntegerProperty(javafx.beans.property.ReadOnlyIntegerProperty) UserHostmask(org.pircbotx.UserHostmask) PostConstruct(javax.annotation.PostConstruct) Lazy(org.springframework.context.annotation.Lazy) NotNull(org.jetbrains.annotations.NotNull) User(org.pircbotx.User) Event(org.pircbotx.hooks.Event) ActionEvent(org.pircbotx.hooks.events.ActionEvent) TaskService(com.faforever.client.task.TaskService) PreferencesService(com.faforever.client.preferences.PreferencesService) LoginSuccessEvent(com.faforever.client.user.event.LoginSuccessEvent) IrcException(org.pircbotx.exception.IrcException) ReadOnlyObjectProperty(javafx.beans.property.ReadOnlyObjectProperty) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) CompletableTask(com.faforever.client.task.CompletableTask) US(java.util.Locale.US) Hashing(com.google.common.hash.Hashing) CompletableFuture(java.util.concurrent.CompletableFuture) UserService(com.faforever.client.user.UserService) MessageEvent(org.pircbotx.hooks.events.MessageEvent) ArrayList(java.util.ArrayList) EventBus(com.google.common.eventbus.EventBus) PartEvent(org.pircbotx.hooks.events.PartEvent) Inject(javax.inject.Inject) OpEvent(org.pircbotx.hooks.events.OpEvent) Service(org.springframework.stereotype.Service) UtilSSLSocketFactory(org.pircbotx.UtilSSLSocketFactory) Subscribe(com.google.common.eventbus.Subscribe) ImmutableSortedSet(com.google.common.collect.ImmutableSortedSet) Color(javafx.scene.paint.Color) ObjectProperty(javafx.beans.property.ObjectProperty) Logger(org.slf4j.Logger) UTF_8(java.nio.charset.StandardCharsets.UTF_8) IOException(java.io.IOException) ChatMessageEvent(com.faforever.client.chat.event.ChatMessageEvent) Profile(org.springframework.context.annotation.Profile) FafService(com.faforever.client.remote.FafService) QuitEvent(org.pircbotx.hooks.events.QuitEvent) Configuration(org.pircbotx.Configuration) UserListEvent(org.pircbotx.hooks.events.UserListEvent) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) PrivateMessageEvent(org.pircbotx.hooks.events.PrivateMessageEvent) ConnectEvent(org.pircbotx.hooks.events.ConnectEvent) VisibleForTesting(com.google.common.annotations.VisibleForTesting) I18n(com.faforever.client.i18n.I18n) NoCatch.noCatch(com.github.nocatch.NoCatch.noCatch) User(org.pircbotx.User) ChatPrefs(com.faforever.client.preferences.ChatPrefs) PostConstruct(javax.annotation.PostConstruct)

Example 20 with User

use of org.pircbotx.User in project downlords-faf-client by FAForever.

the class PircBotXChatService method onMessage.

private void onMessage(MessageEvent event) {
    User user = event.getUser();
    if (user == null) {
        logger.warn("Action event without user: {}", event);
        return;
    }
    String source;
    org.pircbotx.Channel channel = event.getChannel();
    source = channel.getName();
    eventBus.post(new ChatMessageEvent(new ChatMessage(source, Instant.ofEpochMilli(event.getTimestamp()), user.getNick(), event.getMessage(), false)));
}
Also used : User(org.pircbotx.User) ChatMessageEvent(com.faforever.client.chat.event.ChatMessageEvent)

Aggregations

User (org.pircbotx.User)20 PreparedStatement (java.sql.PreparedStatement)10 ChatMessageEvent (com.faforever.client.chat.event.ChatMessageEvent)5 Player (com.faforever.client.player.Player)3 AbstractPlainJavaFxTest (com.faforever.client.test.AbstractPlainJavaFxTest)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Date (java.util.Date)3 MessageEvent (org.pircbotx.hooks.events.MessageEvent)3 PrivateMessageEvent (org.pircbotx.hooks.events.PrivateMessageEvent)3 GenericMessageEvent (org.pircbotx.hooks.types.GenericMessageEvent)3 ResultSet (java.sql.ResultSet)2 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 CompletableFuture (java.util.concurrent.CompletableFuture)2 Formatting (net.minecraft.util.Formatting)2 Test (org.junit.Test)2 FafClientApplication (com.faforever.client.FafClientApplication)1 CUSTOM (com.faforever.client.chat.ChatColorMode.CUSTOM)1 RANDOM (com.faforever.client.chat.ChatColorMode.RANDOM)1 ClientProperties (com.faforever.client.config.ClientProperties)1