Bot Projects
"Bots" are, in this context, automated programs that generate something and post it for entertainment purposes. I became interested in these kinds of code experiments around 2012 after seeing such work by creators like Darius Kazemi and Allison Parrish. This page is an exhaustive list of bots I've made over the years, mostly using the Python programming language. In the spirit of sharing knowledge, source code is available for all but one.
LucasArts Places
As the Film Ends
SimCity 2000 Traffic Helicopter
VGA golden hour
DeusEx.txt
Capcom VS Everyone
WADbot
Vintage LEGO Instructions
__lands__
Daily Emoji
Every JoJo's Bizarre Adventure Character
Every One Piece Character
daily Dylan
Parental Guidance
*Orz*
Manny Calavera
Retired Bots
Random Sandwich
At Bat Today
ROT13 Scavenger
welcome to
SteamDB Linux Update
SimCity 2000 Traffic Helicopter
Status: Active, since 2020-07
Posts: every day at 8:30am PST
Mastodon: @sc2000@mastodon.social
Source code: heptapod.host/jp-lebreton/sc2000bot
In the decades since its release in 1993, players have created thousands of cities in the classic builder game SimCity 2000. With heavy lifting done almost entirely by the OpenCity2k project, this bot picks from a private archive of hundreds of user-created cities and posts a random glimpse of a cityscape. The game's timeless pixel art and the creativity of its players provide the interest here.
SimCity 2000 Traffic HelicopterManny Calavera
Status: Launched 2013-07 to 2020-06, relaunched 2024-12
Posts: 12am midnight PST; poems start sporadically throughout the year
Mastodon: @MannyCalavera@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/mannybot
This was the bot that got me started. Drawing from the 1998 adventure game Grim Fandango's dialog bank for the "open mic poetry" sequence at the Blue Casket beatnik club, this bot generates free-association slam poems by the game's protagonist, Manuel Calavera, posting one new line each night.
Manny Calavera*Orz*
Status: Launched 2014-05 to 2022-11, relaunched 2024-12
Posts: wildly variable random periods of at least a few days
Mastodon: @orz@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/orzbot
Posts random quotes from the enigmatic, alternately lovable and terrifying alien race the Orz from Star Control II: The Ur-Quan Masters, the 1992 cult classic space adventure from Toys for Bob.
OrzAs the Film Ends
Status: Active, since 2014-05
Posts: every day at 4pm PST
Mastodon: @endingsummary@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/plotbot
Most Wikipedia pages for a given film provide at least a brief plot synopsis. Using the sum total of all film pages on Wikipedia as a corpus, this bot picks a random film and posts the final sentence from its plot summary. Spoilers are definitely possible, but given the depth of the corpus it'll usually be a film you've never heard of. A reverse-search (searching for the post's text on Wikipedia) will almost always find the film that has been excerpted on a given day.
As the Film EndsCapcom VS Everyone
Status: Active, since 2018-09
Posts: every day at 12pm PST
Mastodon: @vs_everyone@mastodon.social
Source code: heptapod.host/jp-lebreton/vsbot
Possibly my most elaborate and hardest to explain bot, Capcom VS Everyone (no affiliation with Capcom, or anything else really) depicts pre-match "Versus" screens from a fictitious fighting game whose character roster includes a seemingly infinite breadth of fictional characters from every corner of pop culture.
The bot draws from a private, hand-built corpus that includes character names, fiction of origin, portrait image, and metadata to construct amusing team-ups and showdowns. In early 2021 I wrote a new tool for managing this corpus, which I describe briefly in this thread. At some point I would like to do a video explaining all the ridiculous things going on behind the scenes of this bot; when I finally do so I will be sure to link it here.
Capcom VS EveryoneDeusEx.txt
Status: Active, since 2022-03
Posts: once a day, at 20:52 PST
Mastodon: deus_ex_txt@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/dxbot
Posts random lines from the complete script of Deus Ex, Ion Storm Austin's ground-breaking first person PC RPG from 2000.
DeusEx.txt__lands__
Status: Active, since 2024-07
Posts: every day at 2:30pm PST
Mastodon: @__lands__@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/lands
Posts a basic land card from Magic: the Gathering once a day.
__lands__Daily Emoji
Status: Active, since 2023-06
Posts: every day at 7:17am PST
Mastodon: @daily_emoji@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/moji
Posts a randomly selected emoji from the official Unicode specification once a day. Since 2024-04-01, can also post unusual "combo" emojis from the Emoji Kitchen libarary.
Daily EmojiVGA golden hour
Status: Active, since 2024-08
Posts: twice a day, at sunrise and sunset (PST)
Mastodon: @vga_gradients@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/gradients
Generates color blend images in a variety of styles evoking the 8-bit and 16-bit eras of digital artwork, when color palettes had to be carefully chosen and dithered gradients created beautiful illusions. See these intro posts for more information.
VGA golden hourLucasArts Places
Status: Active, since 2023-08
Posts: every day at 11:38am PST
Mastodon: @lucasarts_places@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/lecrooms
Posts one piece of background art from a classic LucasArts adventure game once a day. Beginning with Maniac Mansion on the Commodore 64 in 1987 and ending with Escape From Monkey Island in 2000, LucasArts' canon of graphic adventures featured a typing-free interface, clever puzzles, great storytelling and humor, and hand-crafted worlds - the latter brought to life by the studio's many talented artists. This bot is a celebration of that work.
LucasArts PlacesWADbot
Status: Active, since 2014-04 (overhauled 2015-05, and again 2020-08)
Posts: every day at 6:30pm PST
Mastodon: @wadbot@mastodon.social
Tumblr (retired 2024-03): wadbot.tumblr.com
Source code: heptapod.host/jp-lebreton/wadbot
Mere months after id Software's landmark 1993 first person shooter Doom was released, fan-made level editors emerged on the net. Since then, the community's output has grown to tens of thousands of levels and mods - commonly referred to by their file format, WADs - and over 25 years later shows no signs of stopping.
WADbot dives into this massive vault of community work, opens up a random level, tries to find the most "interesting" (high detail, mostly) screenshots, and posts them with an excerpt from and link to the database entry.
WADbotEvery JoJo's Bizarre Adventure character
Status: Active, since 2023-11
Posts: every day at 9:21am PST
Mastodon: @jojo_characters@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/jojo_chars
Posts a random character from the Jojo's Bizarre Adventure fan wiki once a day.
Every JoJo's Bizarre Adventure characterEvery One Piece character
Status: Active, since 2024-11
Posts: every day at 1:01pm PST
Mastodon: @one_piece_characters@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/onepiece_chars
Posts a random character from the One Piece fan wiki once a day.
Every One Piece characterVintage LEGO Instructions
Status: Active, since 2025-03
Posts: every day at 10:30am PST
Mastodon: @vintage_lego@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/lego
Posts a random page of LEGO assembly instructions from archives spanning 1958-2010, once a day.
Vintage LEGO Instructionsdaily Dylan
Status: Active, since 2025-01
Posts: every day at 12:35pm PST
Mastodon: @daily_dylan@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/dylan
Lyrics from the pen of Bob Dylan, once a day.
daily DylanParental Guidance
Status: Active, since 2025-07
Posts: every night at 10pm PST
Mastodon: @parental_guidance@mastodon.social
Source code: heptapod.host/jp-lebreton/jp-bots/pg
"Parental Guidance" notes for a random film or TV episode from IMDb. A second account replies to each post with a link to its source.
Parental GuidanceRandom Sandwich
Status: Launched 2014-07, Retired 2016-07
Source code: heptapod.host/jp-lebreton/jp-bots/sandwichbot
Invents and posts a randomly generated sandwich using a very simple implementation of a context-free grammar.
At Bat Today
Status: Launched 2014-12, Retired 2017-02
Source code: heptapod.host/jp-lebreton/atbatbot
A gift for my father, this bot drew from the Baseball Reference website's database of at-bat information from almost a century of recorded baseball history, posting the players involved and outcome for a single at-bat on the same day as the post. During the off-season, posts would be chosen based on players' birthdays.
Unfortunately, changes in the source website's format broke this bot after a few years. Getting it working again would involve a total rewrite, with no guarantee that it wouldn't break again.
ROT13 Scavenger
Status: Launched 2017-06, Retired 2022-11
Source code: heptapod.host/jp-lebreton/rot13bot
ROT13 is a very simple cipher people frequently use online to obscure spoilers, quasi-private whispers, et cetera. This website lets you play with the technique to get a feel for it.
This bot searched twitter for common words ("the", "was", etc) in ROT13, on the assumption that most or all of the resulting posts are written in the cipher. It then simply un-ROT13s the post text, and strips out any @ usernames to keep it (mostly) anonymous.
welcome to
Status: Launched 2017-02, Retired 2022-11
Source code: heptapod.host/jp-lebreton/welcomebot
Greetings to a newcomer, a new situation, sarcasm or exasperation: this bot searched twitter for posts that contained the phrase "welcome to" and posted what follows (excluding links and @ usernames).
SteamDB Linux Update
Status: Launched 2014-06, Retired 2018-08
In the early years of Valve's push to support Linux, thousands of new ports of games became playable on Steam. SteamDB is an independent database that, until 2018, maintained a page that tracked possible additions of Linux support for new and existing games. I created this bot to post new findings from that page. At some point, the bot's scraping logic broke and Tin Tvrtković took over maintenance. Then in 2018 SteamDB discontinued their Linux support page, its purpose having more or less been served.
Live Mastodon feed embeds via Emfed.