/// <summary> /// Performs the initial Slack integration. /// </summary> public void StartIntegration() { client = new SlackSocketClient(Token); client.Connect((loginResponse) => { Connected.Invoke(this, null); client.OnMessageReceived += (obj) => { SlackMessageEventArgs e = new SlackMessageEventArgs { Text = obj.text, Member = new SlackMember(GetUserByName(obj.user)) }; e.Channel = GetChannelByName(obj.channel) == null ? new SlackChannel(e.Member.Name, obj.channel) : new SlackChannel(GetChannelByName(obj.channel)); if (e.Text.Contains($"<@{client.MySelf.id}>")) { MentionReceived?.Invoke(this, e); } else { MessageReceived?.Invoke(this, e); } }; }, () => { //socket connected }); }
public void StartIntegration() { Task.Run(() => { client.Connected += (sender, e) => { Connected?.Invoke(this, null); }; client.SocketClosed += (sender, e) => { IConnectionClosedEventArgs args = new DiscordConnectionClosedEventArgs { Code = e.Code, Reason = e.Reason, Clean = e.WasClean }; ConnectionClosed?.Invoke(this, args); }; client.MessageReceived += (sender, e) => { DiscordMessageReceivedEventArgs args = new DiscordMessageReceivedEventArgs { Channel = new LuigibotDiscordChannel(e.Channel), Member = new LuigibotDiscordMember(e.Author), Text = e.MessageText }; MessageReceived?.Invoke(this, args); }; client.MentionReceived += (sender, e) => { DiscordMessageReceivedEventArgs args = new DiscordMessageReceivedEventArgs { Channel = new LuigibotDiscordChannel(e.Channel), Member = new LuigibotDiscordMember(e.Author), Text = e.MessageText }; MentionReceived?.Invoke(this, args); }; client.SendLoginRequest(); client.Connect(true /*use the .Net ClientWebSocket vs. WebSocketSharp*/); }); }