static async Task MainAsync(string[] args) { discord = new DiscordClient(new DiscordConfiguration { Token = cfgToken, TokenType = TokenType.User }); discord.Ready += async r => { Console.WriteLine("DM Channels: " + discord.PrivateChannels.Count()); foreach (DSharpPlus.Entities.DiscordDmChannel channel in discord.PrivateChannels) { dmChannels.Add(channel); if (channelToSelect != 0) { if (channel.Id == channelToSelect) { selectedChannel = channel; } } } if (channelToSelect == 0) { selectedChannel = dmChannels[0]; } DSharpPlus.Entities.DiscordUser[] tempUsers = selectedChannel.Recipients.ToArray(); if (tempUsers.Length == 1) { LCDWrapper.LogiLcdMonoSetText(0, "Channel: " + tempUsers[0].Username); } else if (tempUsers.Length > 1) { LCDWrapper.LogiLcdMonoSetText(0, "Channel: " + tempUsers[0].Username + " + " + tempUsers.Length + " More"); } LCDWrapper.LogiLcdUpdate(); Console.WriteLine("Selected channel: " + selectedChannel.Recipients[0].Username); getPrevMessages(); }; discord.TypingStarted += async t => { if (t.Channel == selectedChannel) { Console.WriteLine("User typing!"); Thread typingIndicatorThread = new Thread(() => notification(t.User.Username.ToUpper() + " is typing...", 3)); typingIndicatorThread.Start(); } }; discord.DmChannelCreated += async c => { dmChannels.Add(c.Channel); if (c.Channel.Recipients.Count() > 1) { Console.WriteLine("Channel added: " + c.Channel.Recipients[0].Username + " + " + c.Channel.Recipients.Count + " More"); } else if (c.Channel.Recipients.Count() == 1) { Console.WriteLine("Channel added: " + c.Channel.Recipients[0].Username); } }; discord.DmChannelDeleted += async c => { for (int i = 0; i < dmChannels.Count(); i++) { if (dmChannels[i] == c.Channel) { if (dmChannels[i].Recipients.Count() > 1) { Console.WriteLine("Channel removed: " + dmChannels[i].Recipients[0].Username + " + " + dmChannels[i].Recipients.Count + " More"); } else if (dmChannels[i].Recipients.Count() == 1) { Console.WriteLine("Channel removed: " + dmChannels[i].Recipients[0].Username); } dmChannels.RemoveAt(i); break; } } }; discord.MessageCreated += async e => { if (window == 0) { if (e.Channel == selectedChannel) { if (e.Message.MessageType == DSharpPlus.Entities.MessageType.Call) { newMessage(e.Author.Username.ToUpper() + " started a call."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.ChannelIconChange) { newMessage(e.Author.Username.ToUpper() + " changed the channel icon."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.ChannelNameChange) { newMessage(e.Author.Username.ToUpper() + " changed the channel name."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.ChannelPinnedMessage) { newMessage(e.Author.Username.ToUpper() + " pinned a message."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.RecipientAdd) { newMessage(e.Author.Username.ToUpper() + " added a user."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.RecipientRemove) { newMessage(e.Author.Username.ToUpper() + " removed a user."); } else if (e.Message.MessageType == DSharpPlus.Entities.MessageType.Default) { string extraInfo = ""; int attachmentCount = e.Message.Attachments.Count(); if (attachmentCount > 0) { if (attachmentCount == 1) { extraInfo = (" [" + attachmentCount + " Attachment]"); } else if (attachmentCount > 1) { extraInfo = (" [" + attachmentCount + " Attachments]"); } } newMessage(e.Author.Username.ToUpper() + ":" + e.Message.Content + extraInfo); } } else if (e.Channel != selectedChannel) { for (int i = 0; i < dmChannels.Count(); i++) { if (e.Channel == dmChannels[i]) { Thread newUnselectedChannelMessageThread = new Thread(() => notification("Message from " + e.Author.Username.ToUpper(), 0)); newUnselectedChannelMessageThread.Start(); } } } } }; await discord.ConnectAsync(); await Task.Delay(-1); }
static void dmSelect() { DSharpPlus.Entities.DiscordDmChannel[] tempChannels = dmChannels.ToArray(); for (int i = 0; i < tempChannels.Length; i++) { if (tempChannels[i] == selectedChannel) { if (tempChannels.Length > 1) { if ((i + 1) < tempChannels.Length) { selectedChannel = tempChannels[i + 1]; Console.WriteLine("Selected channel: " + selectedChannel.Recipients[0].Username); } else if ((i + 1) >= tempChannels.Length) { selectedChannel = tempChannels[0]; Console.WriteLine("Selected channel: " + selectedChannel.Recipients[0].Username); } } break; } } for (int i = 0; i < tempChannels.Length; i++) { if (tempChannels[i] == selectedChannel) { DSharpPlus.Entities.DiscordUser[] tempUsers = tempChannels[i].Recipients.ToArray(); if (tempUsers.Length == 1) { LCDWrapper.LogiLcdMonoSetText(0, tempUsers[0].Username + " <--"); } else if (tempUsers.Length > 1) { LCDWrapper.LogiLcdMonoSetText(0, tempUsers[0].Username + " + " + tempUsers.Length + " More <--"); } for (int c = 1; c < tempChannels.Length; c++) { if (c <= 3) { if ((i + c) < tempChannels.Length) { tempUsers = tempChannels[i + c].Recipients.ToArray(); if (tempUsers.Length == 1) { LCDWrapper.LogiLcdMonoSetText(c, tempUsers[0].Username); } else if (tempUsers.Length > 1) { LCDWrapper.LogiLcdMonoSetText(c, tempUsers[0].Username + " + " + tempUsers.Length + " More"); } } else { LCDWrapper.LogiLcdMonoSetText(c, ""); } } } } } LCDWrapper.LogiLcdUpdate(); }