Jeopardy: cleanup, minor fixes

This commit is contained in:
oddluck 2020-04-29 08:10:45 -04:00
parent e26ef66af8
commit 08f348a5d4
3 changed files with 797 additions and 317 deletions

View File

@ -41,26 +41,32 @@ import supybot.world as world
__version__ = "2020.02.24+git" __version__ = "2020.02.24+git"
# XXX Replace this with an appropriate author or supybot.Author instance. # XXX Replace this with an appropriate author or supybot.Author instance.
__author__ = supybot.Author('oddluck', 'oddluck', __author__ = supybot.Author("oddluck", "oddluck", "oddluck@riseup.net")
'oddluck@riseup.net')
# This is a dictionary mapping supybot.Author instances to lists of # This is a dictionary mapping supybot.Author instances to lists of
# contributions. # contributions.
if not hasattr(supybot.authors, 'progval') or not hasattr(supybot.authors, 'quantumlemur'): if not hasattr(supybot.authors, "progval") or not hasattr(
supybot.authors.progval = supybot.Author('Valentin Lorentz', 'ProgVal', supybot.authors, "quantumlemur"
'progval@gmail.com') ):
supybot.authors.quantumlemur = supybot.Author('quantumlemur', 'quantumlemur', supybot.authors.progval = supybot.Author(
'quantumlemur@users.sourceforge.net') "Valentin Lorentz", "ProgVal", "progval@gmail.com"
__contributors__ = {supybot.authors.quantumlemur: ['original plugin base'], )
supybot.authors.progval: ['code enhancement']} 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. # This is a url where the most recent plugin package can be downloaded.
__url__ = 'https://github.com/oddluck/limnoria-plugins/' __url__ = "https://github.com/oddluck/limnoria-plugins/"
from . import config from . import config
from . import plugin from . import plugin
from imp import reload from imp import reload
reload(plugin) # In case we're being reloaded.
reload(plugin) # In case we're being reloaded.
# Add more reloads here if you add third-party modules and want them to be # 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! # reloaded when this plugin is reloaded. Don't forget to import them as well!

View File

@ -32,135 +32,339 @@
import supybot.conf as conf import supybot.conf as conf
import supybot.registry as registry import supybot.registry as registry
from supybot.i18n import PluginInternationalization, internationalizeDocstring from supybot.i18n import PluginInternationalization, internationalizeDocstring
_ = PluginInternationalization('Jeopardy')
_ = PluginInternationalization("Jeopardy")
def configure(advanced): def configure(advanced):
# This will be called by supybot to configure this module. advanced is # This will be called by supybot to configure this module. advanced is
# a bool that specifies whether the user identified himself as an advanced # a bool that specifies whether the user identified himself as an advanced
# user or not. You should effect your configuration by manipulating the # user or not. You should effect your configuration by manipulating the
# registry as appropriate. # registry as appropriate.
from supybot.questions import expect, anything, something, yn from supybot.questions import expect, anything, something, yn
conf.registerPlugin('Jeopardy', True)
conf.registerPlugin("Jeopardy", True)
Jeopardy = conf.registerPlugin('Jeopardy') Jeopardy = conf.registerPlugin("Jeopardy")
# This is where your configuration variables (if any) should go. For example: # This is where your configuration variables (if any) should go. For example:
# conf.registerGlobalValue(Jeopardy, 'someConfigVariableName', # conf.registerGlobalValue(Jeopardy, 'someConfigVariableName',
# registry.Boolean(False, """Help for someConfigVariableName.""")) # registry.Boolean(False, """Help for someConfigVariableName."""))
conf.registerChannelValue(Jeopardy, 'blankChar', conf.registerChannelValue(
registry.String('*', _("""The character used for a blank when Jeopardy,
displaying hints"""))) "blankChar",
registry.String(
"*", _("""The character used for a blank when displaying hints"""),
),
)
conf.registerChannelValue(Jeopardy, 'numHints', conf.registerChannelValue(
registry.PositiveInteger(3, _("""The number of hints to be given for Jeopardy,
each question"""))) "numHints",
registry.PositiveInteger(
3, _("""The number of hints to be given for each question"""),
),
)
conf.registerChannelValue(Jeopardy, 'timeReplies', conf.registerChannelValue(
registry.PositiveInteger(1, _("""The number of time remaining replies Jeopardy,
if showHints False and showTime True"""))) "timeReplies",
registry.PositiveInteger(
1,
_(
"""
The number of time remaining replies if showHints False and showTime True
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'delay', conf.registerChannelValue(
registry.Integer(4, _("""The number of seconds to increase the delay Jeopardy,
between questions"""))) "delay",
registry.Integer(
4, _("""The number of seconds to increase the delay between questions"""),
),
)
conf.registerChannelValue(Jeopardy, 'timeout', conf.registerChannelValue(
registry.Integer(90, _("""The number of seconds to allow for Jeopardy,
each question"""))) "timeout",
registry.Integer(90, _("""The number of seconds to allow for each question"""),),
)
conf.registerChannelValue(Jeopardy, 'hintPercentage', conf.registerChannelValue(
registry.Probability(0.25, _("""The fraction of the answer that Jeopardy,
should be revealed with each hint"""))) "hintPercentage",
registry.Probability(
0.25,
_("""The fraction of the answer that should be revealed with each hint"""),
),
)
conf.registerChannelValue(Jeopardy, 'hintReduction', conf.registerChannelValue(
registry.Probability(0.5, _("""The percentage by which to reduce points Jeopardy,
with each hint reveal"""))) "hintReduction",
registry.Probability(
0.5, _("""The percentage by which to reduce points with each hint reveal"""),
),
)
conf.registerChannelValue(Jeopardy, 'flexibility', conf.registerChannelValue(
registry.Float(0.94, _("""The minimum similarity score of the answer checker. Jeopardy,
Uses jaro-winkler distance, 1.0 is identical/disabled. (Sane values > 0.90)"""))) "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', conf.registerChannelValue(
registry.Integer(5, _("""The number of questions that can go Jeopardy,
unanswered before the game stops automatically."""))) "inactiveShutoff",
registry.Integer(
5,
_(
"""
The number of questions that can go
unanswered before the game stops automatically.
"""
),
),
)
conf.registerGlobalValue(Jeopardy, 'jserviceUrl', conf.registerGlobalValue(
registry.String('http://jservice.io', _("""Set an alternate URL where Jeopardy,
jservice can be accessed at, for example a locally run jservice instance."""))) "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', conf.registerChannelValue(
registry.PositiveInteger(10, _("""The default number of questions to Jeopardy,
be asked in a round."""))) "defaultRoundLength",
registry.PositiveInteger(
10, _("""The default number of questions to be asked in a round."""),
),
)
conf.registerChannelValue(Jeopardy, 'randomize', conf.registerChannelValue(
registry.Boolean(True, _("""This will determine whether or not the Jeopardy,
bot will randomize the questions."""))) "randomize",
registry.Boolean(
True,
_(
"""
This will determine whether or not the
bot will randomize the questions.
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'requireOps', conf.registerChannelValue(
registry.Boolean(False, _("""This will determine whether or not the Jeopardy,
user must be a channel operator to start/stop the game."""))) "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', conf.registerChannelValue(
registry.Boolean(True, _("""This will determine whether or not the Jeopardy,
game is enabled for a given channel"""))) "enabled",
registry.Boolean(
True,
_(
"""
This will determine whether or not the
game is enabled for a given channel
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'defaultPointValue', conf.registerChannelValue(
registry.PositiveInteger(500, _("""The default point value for questions if Jeopardy,
no point value is given"""))) "defaultPointValue",
registry.PositiveInteger(
500,
_(
"""
The default point value for questions if
no point value is given.
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'autoRestart', conf.registerChannelValue(
registry.Boolean(False, _("""Start a new round of random questions after Jeopardy,
the current round has ended."""))) "autoRestart",
registry.Boolean(
False,
_(
"""
Start a new round of random questions after
the current round has ended.
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'keepHistory', conf.registerChannelValue(
registry.Boolean(True, _("""Keep a history of previously asked questions per Jeopardy,
channel and don't repeat them."""))) "keepHistory",
registry.Boolean(
True,
_(
"""
Keep a history of previously asked questions per
channel and don't repeat them.
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'useBold', conf.registerChannelValue(
registry.Boolean(True, _("""Use bold in replies."""))) Jeopardy, "useBold", registry.Boolean(True, _("""Use bold in replies."""))
)
conf.registerChannelValue(Jeopardy, 'showScores', conf.registerChannelValue(
registry.Boolean(True, _("""Show scores at the end of the round."""))) Jeopardy,
"showScores",
registry.Boolean(True, _("""Show scores at the end of the round.""")),
)
conf.registerChannelValue(Jeopardy, 'showBlank', conf.registerChannelValue(
registry.Boolean(True, _("""Show first (blank) hint with the question. Overrides showHints only for this reply."""))) Jeopardy,
"showBlank",
registry.Boolean(
True,
_(
"""
Show first (blank) hint with the question. Overrides showHints
only for this reply.
"""
),
),
)
conf.registerChannelValue(Jeopardy, 'showTime', conf.registerChannelValue(
registry.Boolean(True, _("""Show time remaining messages when not showing hints."""))) Jeopardy,
"showTime",
registry.Boolean(
True, _("""Show time remaining messages when not showing hints.""")
),
)
conf.registerChannelValue(Jeopardy, 'showHints', conf.registerChannelValue(
registry.Boolean(True, _("""Show hint messages automatically. Overrides showTime."""))) Jeopardy,
"showHints",
registry.Boolean(
True, _("""Show hint messages automatically. Overrides showTime.""")
),
)
conf.registerGroup(Jeopardy, 'template') conf.registerGroup(Jeopardy, "template")
conf.registerChannelValue(Jeopardy.template, 'question', conf.registerChannelValue(
registry.String("#{{number}} of {{total}}: \x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}", Jeopardy.template,
_("""The template used to render questions."""))) "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.registerGroup(Jeopardy.template, "restart")
conf.registerChannelValue(Jeopardy.template.restart, 'question', conf.registerChannelValue(
registry.String("\x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}", Jeopardy.template.restart,
_("""The template used to render questions when autoRestart is True."""))) "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', conf.registerChannelValue(
registry.String("\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309{{points}}\x03 | Total: \x0309{{total}}", Jeopardy.template.restart,
_("""The template used to render correct answer replies when autoRestart is True."""))) "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', conf.registerChannelValue(
registry.String("HINT: {{hint}}{% if time %} | ({{time}} seconds remaining){% endif %}{% if points %} | \x0309[${{points}}]{% endif %}", _("""The template used to render hints."""))) 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', conf.registerChannelValue(
registry.String("\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309{{points}}\x03 | Round Score: \x0309{{round}}\x03 | Total: \x0309{{total}}", Jeopardy.template,
_("""The template used to render correct answer replies."""))) "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', conf.registerChannelValue(
registry.String("No one got the answer! It was: {{answer}}", Jeopardy.template,
_("""The template used to render unanswered question and skip replies."""))) "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', conf.registerChannelValue(
registry.String("Jeopardy! stopped.{% if answer %} (Answer: {{answer}}){% endif %}", Jeopardy.template,
_("""The template used to render stop replies."""))) "stop",
registry.String(
"Jeopardy! stopped.{% if answer %} (Answer: {{answer}}){% endif %}",
_("""The template used to render stop replies."""),
),
)
conf.registerChannelValue(Jeopardy.template, 'time', conf.registerChannelValue(
registry.String("{{time}} seconds remaining. [.hint] [.question] [.skip]", Jeopardy.template,
_("""The template used to render time remaining replies."""))) "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