예제 #1
0
        private void ProcessPipeMessages()
        {
            var commandList       = commandData.ToString();
            var endWithTerminator = commandList.EndsWith("\t");
            var commands          = commandList.Split("\t".ToCharArray(), 2, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < commands.Length; i++)
            {
                if (i == (commands.Length - 1) && !endWithTerminator)
                {
                    commandData.Clear();
                    commandData.Append(commands[i]);
                    break;
                }

                var commandType  = commands[i].Substring(0, 3);
                var commandValue = commands[i].Substring(3);

                OnMessageReceivedEvent?.Invoke(commandType, commandValue);

                if (i == (commands.Length - 1))
                {
                    commandData.Clear();
                }
            }
        }
예제 #2
0
        private void ProcessInputsPipeMessage(byte[] msg)
        {
            var message = Encoding.UTF8.GetString(msg);
            var command = (RemoteSessionCommand)RemoteSessionCommandMapping.FromPrefix[message.Substring(0, 3)];
            var data    = message.Substring(3);

            OnMessageReceivedEvent?.Invoke(command, data);
        }
예제 #3
0
        private void OnChatMessageHandler(IIncommingMessage message)
        {
            var packet = message.Deserialize(new ChatMessagePacket());

            if (OnMessageReceivedEvent != null)
            {
                OnMessageReceivedEvent.Invoke(packet);
            }
        }
예제 #4
0
        private void ProcessInputsPipeMessage(byte[] msg)
        {
            var message          = Encoding.UTF8.GetString(msg);
            var commandsWithArgs = message.Split(new[] { "\t" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var commandWithArgs in commandsWithArgs)
            {
                var command = (RemoteSessionCommand)RemoteSessionCommandMapping.FromPrefix[commandWithArgs.Substring(0, 3)];
                var data    = commandWithArgs.Substring(3);
                OnMessageReceivedEvent?.Invoke(command, data);
            }
        }
예제 #5
0
        public override void Unload(bool shutdown)
        {
            if (dc != null)
            {
                dc.Dispose();
            }
            if (!registered)
            {
                return;
            }
            OnPlayerConnectEvent.Unregister(PlayerConnect);
            OnPlayerDisconnectEvent.Unregister(PlayerDisconnect);
            OnPlayerChatEvent.Unregister(PlayerChat);
            OnPlayerCommandEvent.Unregister(PlayerCommand);

            OnMessageReceivedEvent.Unregister(DiscordMessage);

            Command.Unregister(Command.Find("DiscordBot"));
        }
예제 #6
0
        public override void Load(bool startup)
        {
            config.LoadConfig();
            if (config.Token == "" || config.ChannelID == "")
            {
                Logger.Log(LogType.Warning, "Invalid config! Please setup the Discord bot in discord.properties! (plugin reload required)");
                return;
            }

            dc = new Discord.Discord(config.Token, config.ChannelID);

            OnPlayerConnectEvent.Register(PlayerConnect, Priority.Low);
            OnPlayerDisconnectEvent.Register(PlayerDisconnect, Priority.Low);
            OnPlayerChatEvent.Register(PlayerChat, Priority.Low);
            OnPlayerCommandEvent.Register(PlayerCommand, Priority.Low);
            OnModActionEvent.Register(ModAction, Priority.Low);

            OnMessageReceivedEvent.Register(DiscordMessage, Priority.Low);

            Command.Register(new CmdDiscordBot());
            registered = true;
        }
예제 #7
0
 public static async Task NotifyMessageReceived(MessageReceivedDto messageReceivedDto)
 => await OnMessageReceivedEvent?.Invoke(messageReceivedDto);
예제 #8
0
 public virtual void OnMessageReceived(object sender, BasicDeliverEventArgs e)
 {
     OnMessageReceivedEvent.Invoke(this, e);
 }