Delete Jeopardy directory

This plugin is fucked, forget it!
This commit is contained in:
Gordon Shumway 2025-01-11 03:12:21 -05:00 committed by GitHub
parent 85b73b0c68
commit c1bf3092ac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 0 additions and 1938 deletions

View File

@ -1,222 +0,0 @@
A fully-featured and customizable IRC trivia game using an archive of Jeopardy! questions.
## This... is... Jeopardy!
Uses [jService](http://jservice.io)
To configure replies, see the [templates](#templates) section.
## Commands
`start [channel] [--num <#>] [--timeout <#>] [--hints <#>] [--no-hints] [--random] [--shuffle] [--restart] [<category1>, <category2>, etc.]`
`start` - start a round with random questions
`start <category name>, <category name>` - search for a category by name, separate multiple categories with commas
`--shuffle` - randomize category searches
`--num <# of questions>` - set the number of questions for the round
`--timeout <# of seconds to answer>` - set the time to answer the question, 0 to disable timeout
`--hint <# of hints>` - specify number of hints, 0 to disable them
`--no-hints` - set showHints and showBlank to False
`--random` - select a category at random
`--restart` - automatically restart a new round when the current round finishes (questions in restarted rounds will be random)
```
categories
```
^ Returns a list of popular Jeopardy! categories.
```
stats [--top <int>] [nick]
```
^ Returns game scores. Defaults to top 5 players. Use `--top` and a number to receive more top players. Specify a nick to get a score for the selected player.
```
question
```
^ Repeat the currently active question.
```
hint
```
^ Display the next hint. If max hints reached, repeat the latest hint. If max hints is 0, show blanked out answer.
```
skip
```
^ Skip the current question.
```
report
```
^ Report the current question as invalid e.g. audio/video based clues.
## Config
```
config list plugins.jeopardy
```
^ List the config variables for the game.
```
config help plugins.jeopardy.<variable_name>
```
^ Get information about what game options the variable controls.
```
config [channel #channel] plugins.jeopardy.blankChar *
```
^ The character used for a blank when displaying hints
```
config [channel #channel] plugins.jeopardy.numHints 3
```
^ The number of hints to be given for each question
```
config [channel #channel] plugins.jeopardy.delay 4
```
^ The number of seconds to delay between questions
```
config [channel #channel] plugins.jeopardy.timeout 90
```
^ The number of seconds to allow for each question
```
config [channel #channel] plugins.jeopardy.hintPercentage 0.25
```
^ The fraction of the answer that should be revealed with each hint
```
config [channel #channel] plugins.jeopardy.hintReduction 0.5
```
^ The percentage by which to reduce points with each hint reveal
```
config [channel #channel] plugins.jeopardy.flexibility 0.94
```
^ Minimum similarity score of the answer checker. Jaro-Winkler distance, 1.0 is identical/disabled. Sane values > 0.9
```
config [channel #channel] plugins.jeopardy.inactiveShutoff 5
```
^ The number of questions that can go unanswered before the game stops automatically
```
config plugins.jeopardy.jserviceUrl http://jservice.io
```
^ Alternate URL where jservice can be accessed at, for example a locally run jservice instance: http://127.0.0.1:3000
```
config [channel #channel] plugins.jeopardy.defaultRoundLength 10
```
^ The default number of questions to be asked in a round
```
config [channel #channel] plugins.jeopardy.randomize True
```
^ This will determine whether or not the bot will randomize the question order
```
config [channel #channel] plugins.jeopardy.requireOps False
```
^ This will determine whether or not the user must be a channel operator to start/stop the game
```
config [channel #channel] plugins.jeopardy.enabled True
```
^ This will determine whether or not the game is enabled for a given channel
```
config [channel #channel] plugins.jeopardy.defaultPointValue 500
```
^ The default point value for questions if no point value is given
```
config [channel #channel] plugins.jeopardy.autoRestart False
```
^ Start a new round of random questions after the current round has ended
```
config [channel #channel] plugins.jeopardy.keepHistory True
```
^ Keep a history of previously asked questions and don't repeat them
```
config [channel #channel] plugins.jeopardy.useBold True
```
^ Use bold in replies
```
config [channel #channel] plugins.jeopardy.showScores True
```
^ Show scores at the end of the round
```
config [channel #channel] plugins.jeopardy.showBlank True
```
^ Show first (blank) hint with the question. Overrides showHints only for this reply
```
config [channel #channel] plugins.jeopardy.showTime True
```
^ Show time remaining messages when showHints is False
```
config [channel #channel] plugins.jeopardy.showHints True
```
^ Show hint messages automatically. Overrides showTime
```
config [channel #channel] plugins.jeopardy.timeReplies 1
```
^ Number of time remaining replies to show when showHints False and showTime True
## Templates
```
config list plugins.jeopardy.template
```
^ List the config variables for the templates.
```
config help plugins.jeopardy.template.<variable_name>
```
^ Get information about what template the variable controls.
`config [channel #channel] plugins.jeopardy.template.correct "\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309{{points}}\x03 | Round Score: \x0309{{round}}\x03 | Total: \x0309{{total}}"`<br />
^ Template for correct answer replies
`config [channel #channel] plugins.jeopardy.template.hint "HINT: {{hint}}{% if time %} | ({{time}} seconds remaining){% endif %}{% if points %} | \x0309[${{points}}]{% endif %}"`<br />
^ Template for hint reply
`config [channel #channel] plugins.jeopardy.template.question "#{{number}} of {{total}}: \x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}"`<br />
^ Template for question reply
`config [channel #channel] plugins.jeopardy.template.skip "No one got the answer! It was: {{answer}}"`<br />
^ Template for reply when question unanswered after timeout or the 'skip' command used
`config [channel #channel] plugins.jeopardy.template.stop "Jeopardy! stopped.{% if answer %} (Answer: {{answer}}){% endif %}"`<br />
^ Template for reply when using the 'stop' command
`config [channel #channel] plugins.jeopardy.template.time "{{time}} seconds remaining. [.hint] [.question] [.skip]"`<br />
^ Template for time remaining reply when showTime = True and showHints = False
## Miscellaneous
Score and history files can be found in <bot_directory>/data/jeopardy/
Forked and significantly modified version of [this trivia plugin](https://github.com/ProgVal/Supybot-plugins/tree/master/Trivia).

View File

@ -1,81 +0,0 @@
###
# Copyright (c) 2010, quantumlemur
# Copyright (c) 2011, Valentin Lorentz
# Copyright (c) 2020, oddluck <oddluck@riseup.net>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
"""
Jeopardy: a trivia game using Jeopardy! questions
"""
import supybot
import supybot.world as world
# Use this for the version of this plugin. You may wish to put a CVS keyword
# in here if you're keeping the plugin in CVS or some similar system.
__version__ = "2020.02.24+git"
# XXX Replace this with an appropriate author or supybot.Author instance.
__author__ = supybot.Author("oddluck", "oddluck", "oddluck@riseup.net")
# This is a dictionary mapping supybot.Author instances to lists of
# contributions.
if not hasattr(supybot.authors, "progval") or not hasattr(
supybot.authors, "quantumlemur"
):
supybot.authors.progval = supybot.Author(
"Valentin Lorentz", "ProgVal", "progval@gmail.com"
)
supybot.authors.quantumlemur = supybot.Author(
"quantumlemur", "quantumlemur", "quantumlemur@users.sourceforge.net"
)
__contributors__ = {
supybot.authors.quantumlemur: ["original plugin base"],
supybot.authors.progval: ["code enhancement"],
}
# This is a url where the most recent plugin package can be downloaded.
__url__ = "https://github.com/oddluck/limnoria-plugins/"
from . import config
from . import plugin
from importlib import reload
reload(plugin) # In case we're being reloaded.
reload(config)
# Add more reloads here if you add third-party modules and want them to be
# reloaded when this plugin is reloaded. Don't forget to import them as well!
if world.testing:
from . import test
Class = plugin.Class
configure = config.configure
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:

View File

@ -1,114 +0,0 @@
Sports
Potpourri
Animals
American History
Transportation
Science
Business & Industry
Stupid Answers
Television
History
Rhyme Time
U.S. Cities
State Capitals
Food
People
Hodgepodge
The Bible
Food & Drink
Word Origins
Common Bonds
3 Letter Words
U.S. Geography
Weights & Measures
Annual Events
Pop Music
Potent Potables
Holidays & Observances
4 Letter Words
U.S. History
Americana
World History
Museums
Bodies Of Water
Colleges & Universities
Musical Instruments
First Ladies
The Movies
Literature
Religion
Zoology
Mythology
Travel & Tourism
Fruits & Vegetables
Nursery Rhymes
Fashion
Familiar Phrases
Around The World
Nonfiction
U.S. States
Nature
Odds & Ends
Geography
World Capitals
U.S.A.
Languages
Homophones
Organizations
5 Letter Words
Vocabulary
Leftovers
Science & Nature
Proverbs
Anagrams
Toys & Games
Mammals
Magazines
Colors
World Geography
Guinness Records
Books & Authors
The Human Body
Double Talk
Quotations
The Civil War
Cooking
Birds
Medicine
Abbrev.
Letter Perfect
Tv Trivia
Insects
Shakespeare
Foreign Words & Phrases
19th Century America
The Body Human
Mountains
Technology
Awards
Singers
Number, Please
Islands
Games
Furniture
Body Language
Children's Literature
Music
Baseball
Quotes
Actors & Actresses
Before & After
The Old Testament
Etiquette
Fictional Characters
Authors
Art
Biology
Health & Medicine
Brand Names
Word Puzzles
6 Letter Words
In Other Words...
Celebrities
Facts & Figures
Weapons

View File

@ -1,370 +0,0 @@
###
# Copyright (c) 2010, quantumlemur
# Copyright (c) 2011, Valentin Lorentz
# Copyright (c) 2020, oddluck <oddluck@riseup.net>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions, and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions, and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the author of this software nor the name of
# contributors to this software may be used to endorse or promote products
# derived from this software without specific prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###
import supybot.conf as conf
import supybot.registry as registry
from supybot.i18n import PluginInternationalization, internationalizeDocstring
_ = PluginInternationalization("Jeopardy")
def configure(advanced):
# This will be called by supybot to configure this module. advanced is
# a bool that specifies whether the user identified himself as an advanced
# user or not. You should effect your configuration by manipulating the
# registry as appropriate.
from supybot.questions import expect, anything, something, yn
conf.registerPlugin("Jeopardy", True)
Jeopardy = conf.registerPlugin("Jeopardy")
# This is where your configuration variables (if any) should go. For example:
# conf.registerGlobalValue(Jeopardy, 'someConfigVariableName',
# registry.Boolean(False, """Help for someConfigVariableName."""))
conf.registerChannelValue(
Jeopardy,
"blankChar",
registry.String(
"*", _("""The character used for a blank when displaying hints"""),
),
)
conf.registerChannelValue(
Jeopardy,
"numHints",
registry.PositiveInteger(
3, _("""The number of hints to be given for each question"""),
),
)
conf.registerChannelValue(
Jeopardy,
"timeReplies",
registry.PositiveInteger(
1,
_(
"""
The number of time remaining replies if showHints False and showTime True
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"delay",
registry.Integer(
4, _("""The number of seconds to increase the delay between questions"""),
),
)
conf.registerChannelValue(
Jeopardy,
"timeout",
registry.Integer(90, _("""The number of seconds to allow for each question"""),),
)
conf.registerChannelValue(
Jeopardy,
"hintPercentage",
registry.Probability(
0.25,
_("""The fraction of the answer that should be revealed with each hint"""),
),
)
conf.registerChannelValue(
Jeopardy,
"hintReduction",
registry.Probability(
0.5, _("""The percentage by which to reduce points with each hint reveal"""),
),
)
conf.registerChannelValue(
Jeopardy,
"flexibility",
registry.Float(
0.94,
_(
"""
The minimum similarity score of the answer checker. Uses jaro-winkler
distance, 1.0 is identical/disabled. (Sane values > 0.90)
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"inactiveShutoff",
registry.Integer(
5,
_(
"""
The number of questions that can go
unanswered before the game stops automatically.
"""
),
),
)
conf.registerGlobalValue(
Jeopardy,
"jserviceUrl",
registry.String(
"http://jservice.io",
_(
"""
Set an alternate URL where
jservice can be accessed at, for example a locally run jservice instance.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"defaultRoundLength",
registry.PositiveInteger(
10, _("""The default number of questions to be asked in a round."""),
),
)
conf.registerChannelValue(
Jeopardy,
"randomize",
registry.Boolean(
True,
_(
"""
This will determine whether or not the
bot will randomize the questions.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"requireOps",
registry.Boolean(
False,
_(
"""
This will determine whether or not the
user must be a channel operator to start/stop the game.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"enabled",
registry.Boolean(
True,
_(
"""
This will determine whether or not the
game is enabled for a given channel
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"defaultPointValue",
registry.PositiveInteger(
500,
_(
"""
The default point value for questions if
no point value is given.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"autoRestart",
registry.Boolean(
False,
_(
"""
Start a new round of random questions after
the current round has ended.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"keepHistory",
registry.Boolean(
True,
_(
"""
Keep a history of previously asked questions per
channel and don't repeat them.
"""
),
),
)
conf.registerChannelValue(
Jeopardy, "useBold", registry.Boolean(True, _("""Use bold in replies."""))
)
conf.registerChannelValue(
Jeopardy,
"showScores",
registry.Boolean(True, _("""Show scores at the end of the round.""")),
)
conf.registerChannelValue(
Jeopardy,
"showBlank",
registry.Boolean(
True,
_(
"""
Show first (blank) hint with the question. Overrides showHints
only for this reply.
"""
),
),
)
conf.registerChannelValue(
Jeopardy,
"showTime",
registry.Boolean(
True, _("""Show time remaining messages when not showing hints.""")
),
)
conf.registerChannelValue(
Jeopardy,
"showHints",
registry.Boolean(
True, _("""Show hint messages automatically. Overrides showTime.""")
),
)
conf.registerGroup(Jeopardy, "template")
conf.registerChannelValue(
Jeopardy.template,
"question",
registry.String(
"#{{number}} of {{total}}: \x0313({{airdate}}) \x0309[${{points}}] "
"\x0310\x1f{{category}}\x1f: {{clue}}",
_("""The template used to render questions."""),
),
)
conf.registerGroup(Jeopardy.template, "restart")
conf.registerChannelValue(
Jeopardy.template.restart,
"question",
registry.String(
"\x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}",
_("""The template used to render questions when autoRestart is True."""),
),
)
conf.registerChannelValue(
Jeopardy.template.restart,
"correct",
registry.String(
"\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: "
"\x0309{{points}}\x03 | Total: \x0309{{total}}",
_(
"""
The template used to render correct answer replies when autoRestart is True.
"""
),
),
)
conf.registerChannelValue(
Jeopardy.template,
"hint",
registry.String(
"HINT: {{hint}}{% if time %} | ({{time}} seconds remaining){% endif %}"
"{% if points %} | \x0309[${{points}}]{% endif %}",
_("""The template used to render hints."""),
),
)
conf.registerChannelValue(
Jeopardy.template,
"correct",
registry.String(
"\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309"
"{{points}}\x03 | Round Score: \x0309{{round}}\x03 | Total: \x0309{{total}}",
_("""The template used to render correct answer replies."""),
),
)
conf.registerChannelValue(
Jeopardy.template,
"skip",
registry.String(
"No one got the answer! It was: {{answer}}",
_("""The template used to render unanswered question and skip replies."""),
),
)
conf.registerChannelValue(
Jeopardy.template,
"stop",
registry.String(
"Jeopardy! stopped.{% if answer %} (Answer: {{answer}}){% endif %}",
_("""The template used to render stop replies."""),
),
)
conf.registerChannelValue(
Jeopardy.template,
"time",
registry.String(
"{{time}} seconds remaining. [.hint] [.question] [.skip]",
_("""The template used to render time remaining replies."""),
),
)

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
requests
ftfy
beautifulsoup4
textdistance[extras]
jinja2
unidecode

View File

@ -1,13 +0,0 @@
from supybot.setup import plugin_setup
plugin_setup(
'Jeopardy',
install_requires=[
'beautifulsoup4',
'ftfy',
'jinja2',
'requests',
'textdistance',
'unidecode',
],
)