mirror of
https://github.com/RPCS3/discord-bot.git
synced 2024-11-26 19:50:36 +00:00
it's anime time for every rule breaker
This commit is contained in:
parent
e69dc48bea
commit
6699b27a7b
@ -203,6 +203,14 @@ namespace CompatBot.Commands
|
||||
await ctx.RespondAsync(result).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[Command("generate"), Aliases("gen", "suggest")]
|
||||
[Description("Generates random name for specified user")]
|
||||
public async Task Generate(CommandContext ctx, [Description("Discord user to dump")] DiscordUser discordUser)
|
||||
{
|
||||
var newName = UsernameZalgoMonitor.GenerateRandomName(discordUser.Id);
|
||||
await ctx.RespondAsync(newName).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[Command("list")]
|
||||
[Description("Lists all users who has restricted nickname.")]
|
||||
public async Task List(CommandContext ctx)
|
||||
|
@ -43,7 +43,9 @@
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="..\win32_error_codes.txt" />
|
||||
<None Remove="..\names_*.txt" />
|
||||
<AdditionalFiles Include="..\win32_error_codes.txt" />
|
||||
<AdditionalFiles Include="..\names_*.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -113,7 +113,7 @@ namespace CompatBot.EventHandlers
|
||||
{
|
||||
displayName = displayName.Normalize(normalizationForm).TrimEager();
|
||||
if (string.IsNullOrEmpty(displayName))
|
||||
return "Rule #7 Breaker #" + userId.GetHashCode().ToString("x8");
|
||||
return GenerateRandomName(userId);
|
||||
|
||||
var builder = new StringBuilder();
|
||||
bool skipLowSurrogate = false;
|
||||
@ -150,9 +150,17 @@ namespace CompatBot.EventHandlers
|
||||
}
|
||||
var result = builder.ToString().TrimEager();
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return "Rule #7 Breaker #" + userId.GetHashCode().ToString("x8");
|
||||
return GenerateRandomName(userId);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string GenerateRandomName(ulong userId)
|
||||
{
|
||||
var hash = userId.GetHashCode();
|
||||
var rng = new Random(hash);
|
||||
var name = NamesPool.List[rng.Next(NamesPool.NameCount)];
|
||||
return $"{name}{NamesPool.NameSuffix} #{hash:x8}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,3 +66,4 @@ External resources that need manual updates
|
||||
* [Unicode Confusables](http://www.unicode.org/Public/security/latest/confusables.txt), for Homoglyph checks
|
||||
* [Windows Error Codes](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/), for error decoding on non-Windows host
|
||||
* Optionally [Redump disc key database](http://redump.org/downloads/) in text format (requires membership)
|
||||
* Optionally pool of names (one name per line), files named as `names_<category>.txt`
|
||||
|
79
SourceGenerators/NamesSourceGenerator.cs
Normal file
79
SourceGenerators/NamesSourceGenerator.cs
Normal file
@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
|
||||
namespace SourceGenerators
|
||||
{
|
||||
[Generator]
|
||||
public class NamesSourceGenerator : ISourceGenerator
|
||||
{
|
||||
private const string Indent = " ";
|
||||
private const string NameSuffix = " the Rule 7 Breaker";
|
||||
private const int DiscordUsernameLengthLimit = 32-10; //" #12345678"
|
||||
|
||||
public void Initialize(GeneratorInitializationContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public void Execute(GeneratorExecutionContext context)
|
||||
{
|
||||
var resources = context.AdditionalFiles.Where(f => Path.GetFileName(f.Path).ToLower().StartsWith("names_") && f.Path.ToLower().EndsWith(".txt")).ToList();
|
||||
if (resources.Count == 0)
|
||||
return;
|
||||
|
||||
var names = new HashSet<string>();
|
||||
foreach (var resource in resources)
|
||||
{
|
||||
using var stream = File.Open(resource.Path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
using var reader = new StreamReader(stream);
|
||||
while (reader.ReadLine() is string line)
|
||||
{
|
||||
if (line.Length < 2 || line.StartsWith("#"))
|
||||
continue;
|
||||
|
||||
var commentPos = line.IndexOf(" (");
|
||||
if (commentPos > 1)
|
||||
line = line.Substring(0, commentPos);
|
||||
line = line.Trim();
|
||||
if (line.Length + NameSuffix.Length > DiscordUsernameLengthLimit)
|
||||
line = line.Split(' ')[0];
|
||||
if (line.Length + NameSuffix.Length > DiscordUsernameLengthLimit)
|
||||
continue;
|
||||
|
||||
names.Add(line);
|
||||
if (line.Contains(' '))
|
||||
names.Add(line.Split(' ')[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!context.AnalyzerConfigOptions.GlobalOptions.TryGetValue("build_property.RootNamespace", out var ns))
|
||||
ns = context.Compilation.AssemblyName;
|
||||
var cn = "NamesPool";
|
||||
var result = new StringBuilder()
|
||||
.AppendLine("using System.Collections.Generic;")
|
||||
.AppendLine()
|
||||
.AppendLine($"namespace {ns}")
|
||||
.AppendLine("{")
|
||||
.AppendLine($"{Indent}public static class {cn}")
|
||||
.AppendLine($"{Indent}{{")
|
||||
.AppendLine($"{Indent}{Indent}public const string NameSuffix = \"{NameSuffix}\";")
|
||||
.AppendLine()
|
||||
.AppendLine($"{Indent}{Indent}public const int NameCount = {names.Count};")
|
||||
.AppendLine()
|
||||
.AppendLine($"{Indent}{Indent}public static readonly List<string> List = new()")
|
||||
.AppendLine($"{Indent}{Indent}{{");
|
||||
foreach (var name in names.OrderBy(n => n))
|
||||
result.AppendLine($"{Indent}{Indent}{Indent}\"{name}\",");
|
||||
result.AppendLine($"{Indent}{Indent}}};")
|
||||
.AppendLine($"{Indent}}}")
|
||||
.AppendLine("}");
|
||||
|
||||
context.AddSource($"{cn}.Generated.cs", SourceText.From(result.ToString(), Encoding.UTF8));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
380
names_anime.txt
Normal file
380
names_anime.txt
Normal file
@ -0,0 +1,380 @@
|
||||
# https://en.wikipedia.org/wiki/Category:Male_characters_in_anime_and_manga
|
||||
Renji Abarai
|
||||
Sōsuke Aizen
|
||||
Alucard (Hellsing)
|
||||
Android 17
|
||||
Alex Louis Armstrong
|
||||
Hao Asakura
|
||||
Yoh Asakura
|
||||
Astro Boy (character)
|
||||
Shinn Asuka
|
||||
Char Aznable
|
||||
B
|
||||
Bardock
|
||||
Batou
|
||||
Beerus
|
||||
Beyond the Grave (Gungrave)
|
||||
Black Jack (manga character)
|
||||
Black Star (Soul Eater)
|
||||
Legato Bluesummers
|
||||
King Bradley
|
||||
Dio Brando
|
||||
Brock (Pokémon)
|
||||
Broly
|
||||
C
|
||||
Cell (Dragon Ball)
|
||||
Cross Marian
|
||||
D
|
||||
Osamu Dazai (Bungo Stray Dogs)
|
||||
Doraemon (character)
|
||||
Natsu Dragneel
|
||||
E
|
||||
Ryoma Echizen
|
||||
Makoto Edamura
|
||||
Alphonse Elric
|
||||
Edward Elric
|
||||
Kiritsugu Emiya
|
||||
Shirou Emiya
|
||||
F
|
||||
Luke fon Fabre
|
||||
Fai D. Flowright
|
||||
Father (Fullmetal Alchemist)
|
||||
Frieza
|
||||
Akira Fudo
|
||||
G
|
||||
Gaara
|
||||
Gourry Gabriev
|
||||
Gohan
|
||||
Goku
|
||||
Hayato Gokudera
|
||||
Griffith (Berserk)
|
||||
H
|
||||
Tadashi Hamada
|
||||
Mitsukuni Haninozuka
|
||||
Captain Harlock
|
||||
Haseo
|
||||
Kakashi Hatake
|
||||
Kyoya Hibari
|
||||
Himura Kenshin
|
||||
Saito Hiraga
|
||||
Yoichi Hiruma
|
||||
Tōshirō Hitsugaya
|
||||
Van Hohenheim
|
||||
Bertolt Hoover
|
||||
Maes Hughes
|
||||
Cygnus Hyoga
|
||||
I
|
||||
Hikaru Ichijyo
|
||||
Gin Ichimaru
|
||||
Gendo Ikari
|
||||
Shinji Ikari
|
||||
Phoenix Ikki
|
||||
Inuyasha (character)
|
||||
Matt Ishida
|
||||
Uryū Ishida
|
||||
Goemon Ishikawa XIII
|
||||
Shinichi Izumi
|
||||
J
|
||||
Jadeite (character)
|
||||
Daisuke Jigen
|
||||
Jiraiya (Naruto)
|
||||
Jiren (Dragon Ball)
|
||||
Jonathan Joestar
|
||||
Joseph Joestar
|
||||
Jotaro Kujo
|
||||
K
|
||||
Seto Kaiba
|
||||
Kaito Kuroba
|
||||
Tanjiro Kamado
|
||||
Tai Kamiya
|
||||
Yu Kanda
|
||||
Kawaki
|
||||
Kenshiro
|
||||
Ash Ketchum
|
||||
Kirito (Sword Art Online)
|
||||
Yusaku Kitamura
|
||||
Sena Kobayakawa
|
||||
Susumu Kodai
|
||||
Shinya Kogami
|
||||
Koji Kabuto
|
||||
Krillin
|
||||
Byakuya Kuchiki
|
||||
Jimmy Kudo
|
||||
Kurogane (Tsubasa: Reservoir Chronicle)
|
||||
Kei Kurono
|
||||
Ichigo Kurosaki
|
||||
Suzaku Kururugi
|
||||
Kimihito Kurusu
|
||||
L
|
||||
L (Death Note)
|
||||
Lambo (Reborn!)
|
||||
Lelouch Lamperouge
|
||||
Lavi (D.Gray-man)
|
||||
Rock Lee
|
||||
Yuri Lowell
|
||||
Arsène Lupin III
|
||||
M
|
||||
Majin Buu
|
||||
Shogo Makishima
|
||||
Manji (Blade of the Immortal)
|
||||
Mello (Death Note)
|
||||
Mifune (Soul Eater)
|
||||
Teru Mikami
|
||||
Mikoto Mikoshiba
|
||||
Millennium Earl
|
||||
Mitsuki (Naruto)
|
||||
Monkey D. Luffy
|
||||
Fuma Monou
|
||||
Takashi Morinozuka
|
||||
Keiichi Morisato
|
||||
Ataru Moroboshi
|
||||
Roy Mustang
|
||||
Yugi Mutou
|
||||
Myōjin Yahiko
|
||||
N
|
||||
Nagato (Naruto)
|
||||
User:3474816aaa/sandbox2
|
||||
Kaworu Nagisa
|
||||
Atsushi Nakajima (Bungo Stray Dogs)
|
||||
Naofumi Iwatani
|
||||
Shikamaru Nara
|
||||
Subaru Natsuki
|
||||
Nea D. Campbell
|
||||
Nobita Nobi
|
||||
Umetarō Nozaki
|
||||
O
|
||||
Rintaro Okabe
|
||||
Orochimaru (Naruto)
|
||||
Ovan
|
||||
P
|
||||
Professor Ochanomizu
|
||||
R
|
||||
Raoh
|
||||
Amuro Ray
|
||||
Robita
|
||||
Rock (manga)
|
||||
Mukuro Rokudo
|
||||
Roronoa Zoro
|
||||
Ryuk (Death Note)
|
||||
S
|
||||
Yasutora Sado
|
||||
Toshiyuki Saejima
|
||||
Sagara Sanosuke
|
||||
Saitō Hajime (Rurouni Kenshin)
|
||||
Gintoki Sakata
|
||||
Shinichi Sakurai
|
||||
Seishiro Sakurazuka
|
||||
Genma Saotome
|
||||
Ranma Saotome
|
||||
Ryohei Sasagawa
|
||||
Tsuna Sawada
|
||||
Scar (Fullmetal Alchemist)
|
||||
Setsuna F. Seiei
|
||||
Pegasus Seiya
|
||||
Seta Sōjirō
|
||||
Hosuke Sharaku
|
||||
Arata Shindo
|
||||
Shinomori Aoshi
|
||||
Kamui Shiro
|
||||
Dragon Shiryū
|
||||
Shishio Makoto
|
||||
Andromeda Shun
|
||||
Spike Spiegel
|
||||
Strider Hiryu
|
||||
Subaru Sumeragi
|
||||
Syaoran (Tsubasa: Reservoir Chronicle, clone)
|
||||
Syaoran (Tsubasa: Reservoir Chronicle, original)
|
||||
T
|
||||
Ryuji Takasu
|
||||
Soun Tendo
|
||||
Dr. Tenma
|
||||
Kunimitsu Tezuka
|
||||
Laurent Thierry
|
||||
Tien Shinhan
|
||||
Togusa
|
||||
Kaname Tōsen
|
||||
Trunks (Dragon Ball)
|
||||
Tsubasa Oozora
|
||||
Shou Tucker
|
||||
Tuxedo Mask
|
||||
U
|
||||
Itachi Uchiha
|
||||
Madara Uchiha
|
||||
Obito Uchiha
|
||||
Sasuke Uchiha
|
||||
Ryūnosuke Uryū
|
||||
Boruto Uzumaki
|
||||
Naruto Uzumaki
|
||||
V
|
||||
Vash the Stampede
|
||||
Vegeta
|
||||
Waver Velvet
|
||||
Viewtiful Joe (character)
|
||||
W
|
||||
Allen Walker
|
||||
Kimihiro Watanuki
|
||||
Leonardo Watch
|
||||
Nicholas D. Wolfwood
|
||||
X
|
||||
Xellos
|
||||
Y
|
||||
Light Yagami
|
||||
Takeshi Yamamoto
|
||||
Kira Yamato
|
||||
Yamcha
|
||||
Eren Yeager
|
||||
Youji Itami
|
||||
Yukishiro Enishi
|
||||
Z
|
||||
Athrun Zala
|
||||
Zamasu
|
||||
Kenpachi Zaraki
|
||||
Kiyo Takamine and Zatch Bell
|
||||
Koichi Zenigata
|
||||
|
||||
# https://en.wikipedia.org/wiki/Category:Female_characters_in_anime_and_manga
|
||||
Yūko Aioi
|
||||
Taiga Aisaka
|
||||
Moka Akashiya
|
||||
Homura Akemi
|
||||
Alita (Battle Angel Alita)
|
||||
Misa Amane
|
||||
Android 18
|
||||
Asuna (Sword Art Online)
|
||||
Athena (Saint Seiya)
|
||||
Cagalli Yula Athha
|
||||
Rei Ayanami
|
||||
B
|
||||
Belldandy
|
||||
Queen Beryl
|
||||
Bulma
|
||||
C
|
||||
C.C. (Code Geass)
|
||||
Chi (Chobits)
|
||||
Chi-Chi (Dragon Ball)
|
||||
Lacus Clyne
|
||||
D
|
||||
Dejiko
|
||||
Chrome Dokuro
|
||||
E
|
||||
Edward (Cowboy Bebop)
|
||||
Ami Enan
|
||||
Erza Scarlet
|
||||
F
|
||||
Faye Valentine
|
||||
Haruhi Fujioka
|
||||
Chika Fujiwara
|
||||
G
|
||||
Yuno Gasai
|
||||
Golden Darkness
|
||||
Rias Gremory
|
||||
H
|
||||
Sakura Haruno
|
||||
Hatsune Miku
|
||||
Misa Hayase
|
||||
Lucy Heartfilia
|
||||
Hestia (character)
|
||||
Hinako (anime character)
|
||||
Tohru Honda
|
||||
Hinata Hyuga
|
||||
I
|
||||
Yuko Ichihara
|
||||
Orihime Inoue
|
||||
Lum Invader
|
||||
Konata Izumi
|
||||
Sagiri Izumi
|
||||
J
|
||||
Yumeko Jabami
|
||||
Oscar François de Jarjayes
|
||||
Abigail Jones
|
||||
K
|
||||
K.R.T. Girls
|
||||
Kamiya Kaoru
|
||||
Madoka Kaname
|
||||
Urumi Kanzaki
|
||||
Yuu Kashima
|
||||
Misato Katsuragi
|
||||
Tomie Kawakami
|
||||
Ami Kawashima
|
||||
Miyuki Kobayakawa
|
||||
Yuri Koigakubo
|
||||
Yotsuba Koiwai
|
||||
Kirino Kosaka
|
||||
Rukia Kuchiki
|
||||
Motoko Kusanagi
|
||||
Minori Kushieda
|
||||
Anna Kyoyama
|
||||
L
|
||||
Lala Satalin Deviluke
|
||||
Nunnally Lamperouge
|
||||
Leafa
|
||||
Lenalee Lee
|
||||
Lillie (Pokémon)
|
||||
Lina Inverse
|
||||
M
|
||||
Makimachi Misao
|
||||
Hitomi Manaka
|
||||
Wendy Marvell
|
||||
Sakura Matou
|
||||
Michiko & Hatchin
|
||||
Sayaka Miki
|
||||
Milia Fallyna Jenius
|
||||
Mai Minakami
|
||||
Fujiko Mine
|
||||
Lynn Minmay
|
||||
Mikoto Misaka
|
||||
Misty (Pokémon)
|
||||
Momo Belia Deviluke
|
||||
Kirari Momobami
|
||||
Satomi Murano
|
||||
N
|
||||
Naga the Serpent
|
||||
Mio Naganohara
|
||||
Tsubaki Nakatsukasa
|
||||
Nami (One Piece)
|
||||
Naru Narusegawa
|
||||
Nausicaä (Nausicaä of the Valley of the Wind)
|
||||
Queen Nehelenia
|
||||
Nico Robin
|
||||
Himari Noihara
|
||||
Arale Norimaki
|
||||
O
|
||||
Origami Tobiichi
|
||||
P
|
||||
Paninya
|
||||
Portrayals of Alice in Wonderland
|
||||
Projekt Melody
|
||||
R
|
||||
Yomiko Readman
|
||||
Winry Rockbell
|
||||
Roll (Mega Man)
|
||||
S
|
||||
Saber (Fate/stay night)
|
||||
Haruna Sairenji
|
||||
Sakura (Tsubasa: Reservoir Chronicle)
|
||||
Chiyo Sakura
|
||||
Kyoko Sakura
|
||||
Izumi Sakurai
|
||||
Ranma Saotome
|
||||
Yuzuki Seo
|
||||
Mika Shimotsuki
|
||||
Hakase Shinonome
|
||||
Sinon (Sword Art Online)
|
||||
Skuld (Oh My Goddess!)
|
||||
Asuka Langley Soryu
|
||||
Kallen Stadtfeld
|
||||
Celty Sturluson
|
||||
Super Sonico
|
||||
Haruhi Suzumiya (character)
|
||||
T
|
||||
Kiyomi Takada
|
||||
Utena Tenjou
|
||||
Rin Tohsaka
|
||||
Mami Tomoe
|
||||
Akane Tsunemori
|
||||
U
|
||||
Sarada Uchiha
|
||||
Urd (Oh My Goddess!)
|
||||
Hana Uzaki
|
||||
Z
|
||||
Zero Two
|
Loading…
Reference in New Issue
Block a user