Skip to content
yano edited this page Mar 16, 2019 · 36 revisions

Welcome to the jenni wiki!

A Quick Introduction

jenni is a python IRC bot maintained and developed by yano. This project was created by Sean B. Palmer.

Getting Started

How to create a module of your own for jenni/Phenny

jenni UNO help

IRC String Formatting

Weather bot (wxbot)

Commands by module

Unless otherwise specified commands begin with a period ('.'). Some commands must be invoked by talking directly to jenni (e.g., 'jenni: reload <module>'), while others simply listen to all input (e.g., listening to the conversation for URLs).

adminchannel.py

  • ban <banmask>
  • deop <channel> <user> - If user isn't provided the caller will be assumed.
  • devoice <channel> <user> - If user isn't provided the caller will be assumed.
  • kick <nick> <reason>
  • kickban, kb <channel> <nick> <mask> <reason>
  • op <channel> <user> - If user isn't provided the caller will be assumed.
  • quiet <quietmask>
  • topic <topic>
  • unban <banmask>
  • unquiet <quietmask>
  • voice <channel> <user> - If user isn't provided the caller will be assumed.

admin.py

  • blocks <add|del|list> <nick|hostmask> <nick|hostmask> - Block a nick or hostmask from issuing commands to jenni. Note that you must specify nick or hostmask, e.g., .blocks add nick badguy
  • join <channel> - Join the provided channel. (owner only)
  • part <channel> - Leave the provided channel. (admin only)
  • quit - Disconnect from the network. (owner only)
  • write <command> - jenni will send a raw IRC command to the server (owner only) type literally type out "\x01" and it will be replaced as the unprintable character.

animate_me.py

  • animate_me, nm8_me <search term> - Find an animated gif from giphy.com.

arxiv.py

  • arxiv <query> - Query arXiv.

ask.py

  • ask - Ask jenni a yes or no question, and she'll respond randomly with yes or no. Also if you give her a list of items separated by ' or ' she'll randomly choose one of them.

banned_words.py

  • list_banned_words - List the banned words for the current channel.

baseball.py

  • mlb <team code> - Look up the current score of an MLB team.

calc.py

  • c, cal, calc <query> - Return the Frink calc for <query>.
  • py, python <python> - Interpret some Python (runs on Google App Engine).
  • wa, wolfram <query> - Query WolframAlpha.

chat.py

  • removed

cleverbot.py

  • removed

clock.py

  • beats - Returns the current internet time
  • easter <year> - displays the date for Easter for a given year.
  • npl - Show the time from NPL's SNTP server.
  • tock - Return the time from the USNO Master Clock.
  • t, time <timezone> - Returns the current time
  • yi - Says if it is Yi or not.

codepoints.py

  • bytes <str> - Return the byte representation of <str>.
  • u <regexp> - Search for a particular Unicode codepoint.

countdown.py

  • countdown, cd <YYYY> <MM> <DD> - Displays the time difference between now and a given date at 00:00Z.
  • nye <-time> - Time remaining to NYE.

dinner.py

  • fucking_dinner, fd, wtfsimfd - Provides an explitive laced suggestion for what to eat, with recipe.

etymology.py

  • ety <word> - Find etymology for a given word from etymonline.com.

find.py

  • s/<find>/<replace> - Not a command, jenni will listen for phrases beginning with s/ and perform basic find-replace functionality. Note that this is not PRE compliant.

food.py

  • .food <location> - Find food in your area using the Yelp API.

github_stats.py

  • gh_contribs, github_contribs <project> - List the number of and top five contributors to a Github project (with number of contributions).
  • gh_prs, github_prs <project> - List the number of and latest five pull requests.
  • gh_search, github_search, gh_s <query> - Search Github for the top 5 repository results for a given query.
  • gh_user_search, github_user_search, gh_usr_s <query> - Search github for the top 5 user results for a given query.
  • gh_user_info, github_user_info, gh_usr, gh_user, gh_u <user> - Print available user info

ham.py

  • cs <callsign> - Returns the name of a given call sign using QTH's website.
  • cw <text|morse> - Returns the morse or text translation given.

head.py

  • head <URI> - Perform an HTTP HEAD on URI.

hindiety.py

  • hi <text> - Hindi meaning, transliteration, and synonyms.

image_me.py

  • img_me, image_me <search term> - Provide a random result from the first page of Google Image search.

info.py

  • commands, help - Display a list of all commands
  • help <function_name> - Displays help information if a function name is provided from the list returned by .commands.
  • stats - List most used commands, most active users.

insult.py

  • i <nick> - Insults nick with a random insult in the default language.
  • iadd <insult> - Add an insult to the insult database.

ip.py

  • ip, iplookup, host <ip|host> - Get approximate geolocation from an IP or host using freegeoip.net.

isup.py

  • isup <website> - Check if jenni thinks a website is up.

latex.py

  • tex, latex <string of latex> - Returns a tinyurl of an image generated by provided LaTeX

lispy.py

  • lisp <lisp> - Scheme interpreter.

man.py

  • man, manual <binary> - Yields the man page (from man.he.net) as a private message to the requester.

motivate.py

  • !m <nick> - Motivate a user.

movie.py

  • movie, imdb, show, tv <film name> - Displays information from IMDB about a given film. Thanks Embolalia!.

mustache_me.py

  • mustache_me <search term> - Adds a mustache to the image returned for the given search term.

nws.py

  • nws, nws-more - Query NOAA for warnings, watches or advisories for a given ZIP code or county, state pair.
  • warns - Add warning for weather feed. (admin only)

oblique.py

  • o <servicename> <arg1 arg2 ...> - Call a webservice with the given arguments.

oed.py

  • oed <word> - Search the Oxford English Dictionary for the defintion of word.

ping.py

proxy.py

quote.py

  • addquote <text here> - adds a quote to the quote database.
  • grab <nick> - Yields a random quote by a given user.
  • quote - Randomly displays a quote.
  • quote <number> - Displays a specific quote.
  • rmquote, delquote <number> - removes the given quote number from the database (admins only).

rand.py

  • rand <num> <num> - Randomly picks a number between the two points. One number can be provided and jenni will assume the other bound is 0.

reload.py

  • reload <module>: Ask jenni to reload a module. (admin only)

remind.py

  • at <time> <message> - Displays a message at a given time.
  • in <time> <message> - Displays a message after the given time has elapsed. Thanks sbp!.

roulette.py

  • roulette - Play kick roulette
  • roulette-stop - Stop kick roulette

rss.py

  • rss-admin <add|del> <##channel_name> <Site_Name> <URL> - this will add or delete a new RSS feed to be associated with the provided channel. When deleting you can specify just the (channel name and the site_name) or you can delete all feeds in a given channel by just specifying the channel name, (.rss-admin del ##channel).
  • startrss, rss <start|stop> - this will start or stop the RSS feeder reader.

scores.py

  • addpoint <nick> - Give a point to a user.
  • points, point, scores, score <channel> <user> - Show the scores jenni currently has a record of for a given user in a given channel.
  • rmpoint <nick> - Remove a point for a given user.
  • rmuser <nick> - Remove scores for a given user in the current channel.
  • setpoint, setscore <channel> <nick> <number> <number> - Sets score for user.

search.py

  • bing <search query> - Provides the first result from a Bing search.
  • duck, ddg <search query> - Provides the first link from a DuckDuckGo search.
  • g - <query> - Google for <query> and return the top result.
  • gc - <query> - Return the Googlecount for <query>.
  • gcs, comp <arg1> <arg2> .. - Compare the number of results for up to six search queries.
  • search <search query> - Provides the first result from Bing, DuckDuckgo, and Google.
  • suggest <search query> - Provides "Google Suggest" of provided query.

seen.py

  • seen <nick> - Jenni will report when the user was last seen.

slap.py

  • slap, slaps <nick> - Slap a given user.

southpark.py

  • southpark <cleartimes|clearnewep> - If no arguments given it will get the new episode date for Southpark.

strawpoll.py

  • sp, straw, strawpoll --title="Title" [--multi] [--permissive] "Option 1" "Option 2" ["Option 3" ...] - Allows for up to 30 options, returning the strawpoll
  • rsp, restraw, resendstrawpoll - Resends the last poll for the current channel

tell.py

  • tell, to <person> <message> - relays a message to a person the next time they say something anywhere jenni is present.

tld.py

  • tld <top level domain> - displays a description of information about a given Top Level Domain including whether it supports IDN, DNSSEC, and SLD.

translate.py

  • lang, 639 <phrase> - print the language name, native name, language family, and iso639 parts (http://en.wikipedia.org/wiki/ISO_639).
  • mangle <phrase> - Attempt a translation to English.
  • tr <phrase> - Attempt translate a phrase (less than 350 chars), optionally with a language hint.

twitter.py

twss.py

  • twss <text> - Adds a common phrases to respond with "that's what she said".

unicode.py

units.py

  • btc - Display the current price for Bitcoins in USD.
  • fbtc - Display the explitive laced current price for Bitcoins in USD.

unobot.py

  • away
  • cards
  • deal
  • draw, d, dr
  • fping
  • leave
  • pass, pa
  • pce
  • pce-clear
  • pce-off
  • pce-on
  • ping
  • play, p
  • top
  • ujoin
  • uno - Start a game of uno. More commands and how to play included at the UNO page
  • uno-help, unohelp
  • unostats
  • unostop
  • unotop10

unostats.py

  • unostats2

url.py

  • bitly <url> - Generate a bitly shortlink for the given URL.
  • puny, idn, idna <text> - Convert the given text to xn-- code for URLs.
  • title <url> - Show the title for a given URL.
  • unbitly, untiny, longurl, st, short <url> - Get the final URL from a short URL.
  • <url> - jenni will find the final title for any URL put in chat.

validate.py

  • val <url> - Say whether a given URL is valid according to the W3C markup validator.

version.py

  • version - Displays the current git information that jenni is using Thanks silas!.

weather.py

  • forecast, fct, fc <location> - Get the forecast for a given location from forecast.io.
  • forecast-wg <location> - Get the forecast from wunderground.com.
  • fucking_weather, fw <zip or city + state> - Displays results from thefuckingweather.com.
  • metar <location> - Shows the raw METAR data for a given location from noaa.gov.
  • windchill, wc <temp> <wind speed> - Shows the windchill in Fahrenheit.
  • wxi-ft, wx-ft, weather-ft, weather, wx <location> - Gets the weather for the given location from forecast.io.
  • wx-wg, weather-wg <location> - Get the full list of weather conditions from wunderground.com.
  • weather-noaa, wx-noaa <ICAO> - Shows the weather at the airport with the given code.

why.py

  • why, tubbs - Randomly display a sentence that tries to explain 'why'.

wikipedia.py

  • w, wik, wiki <entry> - Returns the wiki entry for <entry>.

wikiquote.py

  • list_quote_cats, list_wikiquote_cats, ls_wq_cats - List the categories that jenni can query
  • wq, wikiquote <category> - Yields a random quote from the given category from wikiquote.org. If no category is selected jenni will give a random quote from all possible categories.

wiktionary.py

  • dict, define, word <word> - Define a word using wiktionary.org.

woot.py

  • woot - displays the current item available on woot.com.

xkcd.py

  • xkcd - Randomly generates a valid URL for an xkcd item.

youtube.py

  • yt_search, youtube_search <search_term> - Get the top videos by relevance
  • yt_info, youtube_info <uid> - Get video info by UID

Other modules

ai.py, resp.py, school.py, and twit.py, are a bit more involved because they don't specifically have a "command" that triggers them.

ai.py - This is the "artificial intelligence module." This module tries to provide some interaction with jenni. If you want a bot that only responds when spoken to, you might want to disable this module or just delete it.

resp.py - This is the "jenni response module." This module has the most annoying features that use to be included in ai.py. As above, if you want a bot that only responds when spoken to, you might want to disable this module or just delete it.

school.py - This feature parses schedulizer.com for classes schedule. To utilize this feature use the command .school. However, at the moment it does not work. This feature has been disabled for the time being.