@Brian: The Markov chain uses individual words (not letters). The original code is in the public domain and can be found here . I took the code (with some slight modifications), and a list of over 5000 names and made the markov logic available as an API command. The !markov command only handles single words (names) from the default nameset, unless you created your own nameset handout , then you can use !markov <name> where <name> is the name of the handout. I use a small list of Latin words in my example. The next version that I have almost finished will give you the option to bypass the markov logic and simply select a random name from the nameset. Also, right now only one custom handout/nameset will work. The next version will let you create as many as you want. For example you will be able to create separate namesets of Elven, Dwarven, and Orc names so that you can do something like this: !markov dwarf or !markov elf --no-chain where the first command would use markov logic to create a new name from the existing dwarven nameset, and the command with the --no-chain flag would grab a random elven name without modification from your elven nameset/handout.