private static string CheckForMentions(IMessageChannel channel, string message) { var words = message.Split().Where(x => x.StartsWith("@")); if (!words.Any()) { return(message); } var users = AsyncEnumerableExtensions.Flatten(channel.GetUsersAsync()); users.Select(x => $"@{x.Username}").Intersect(words.ToAsyncEnumerable()).ForEach(async x => { var user = await users.First(y => y.Username == x.Substring(1)); message = message.Replace(x, user.Mention); }); if (channel is SocketTextChannel) { var castChannel = (SocketTextChannel)channel; var roles = castChannel.Guild.Roles; roles.Select(x => $"@{x.Name}").Intersect(words).ToList().ForEach(x => { var role = roles.First(y => y.Name == x.Substring(1)); message = message.Replace(x, role.Mention); }); } return(message); }
private static string CheckForMentions(IMessageChannel channel, string message) { var words = message.Split().Where(x => x.StartsWith("@")); if (!words.Any()) { return(message); } var users = AsyncEnumerableExtensions.Flatten(channel.GetUsersAsync()); users.Select(x => $"@{x.Username}").Intersect(words.ToAsyncEnumerable()).ForEach(async x => { var user = await users.First(y => y.Username == x.Substring(1)); message = message.Replace(x, user.Mention); }); return(message); }