TriviaTime: various fixes.
This commit is contained in:
parent
64a2b4362c
commit
ab0940a95f
|
@ -1,3 +1,10 @@
|
|||
# Questions
|
||||
storage/
|
||||
!storage/db/
|
||||
|
||||
# Configurations
|
||||
config.php
|
||||
|
||||
*.py[cod]
|
||||
|
||||
# C extensions
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
Forked from https://github.com/tannn/TriviaTime
|
||||
|
||||
# Configuration
|
||||
|
||||
See Jeopardy plugin for using jservice.io (156,800+ Jeopardy! questions) as trivia question source
|
||||
|
||||
Requires Limnoria and Python 3
|
||||
|
||||
## Setting up the plugin
|
||||
|
@ -30,6 +26,32 @@ Requires Limnoria and Python 3
|
|||
## Question editing tools
|
||||
TriviaTime was designed to make editing, deleting, and adding questions a breeze, for both administrators and players. However, due to the amount of tools available, it can be complicated to new players. Instructions on these tools are available [here][].
|
||||
|
||||
## How to modify configuration
|
||||
|
||||
Do not touch `config.py` or any other configuration file. Instead, use the Config plugin on IRC:
|
||||
|
||||
```
|
||||
.config plugins.pluginName.parameterGroup.parameterName value
|
||||
```
|
||||
|
||||
Examples:
|
||||
```
|
||||
# Modify duration of time in between hints to 15 seconds:
|
||||
.config plugins.triviatime.questions.hinttime 15
|
||||
|
||||
# Modify duration of time in between KAOS hints to 20 seconds:
|
||||
.config plugins.triviatime.kaos.hintkaos 20
|
||||
|
||||
# Modify command to show additional hint to ~:
|
||||
.config plugins.triviatime.commands.extraHint ~
|
||||
```
|
||||
|
||||
For a full list of general Limnoria configuration parameters, see the `.conf` file in the bot base directory.
|
||||
|
||||
For a full list of TriviaTime configuration parameters, refer to `config.py` in the `TriviaTime/` directory.
|
||||
|
||||
---
|
||||
|
||||
# How to set up the website
|
||||
|
||||
## Download and Install
|
||||
|
|
|
@ -42,7 +42,7 @@ conf.registerChannelValue(TriviaTime.admin, 'file',
|
|||
|
||||
# timeout, number of hints, values
|
||||
conf.registerChannelValue(TriviaTime.commands, 'extraHint',
|
||||
registry.NormalizedString(""".""",
|
||||
registry.NormalizedString("""~""",
|
||||
"""The command to show extra hints and remaining KAOS""")
|
||||
)
|
||||
|
||||
|
@ -57,7 +57,7 @@ conf.registerChannelValue(TriviaTime.general, 'globalStats',
|
|||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.hints, 'extraHintTime',
|
||||
registry.Integer(90,
|
||||
registry.Integer(10,
|
||||
"""Number of seconds a user must wait between uses of the extra hint command.""")
|
||||
)
|
||||
|
||||
|
@ -72,12 +72,12 @@ conf.registerChannelValue(TriviaTime.general, 'showStats',
|
|||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.skip, 'skipThreshold',
|
||||
registry.Float(.5,
|
||||
registry.Float(.50,
|
||||
"""Percentage of active players who need to vote for a question to be skipped""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.skip, 'skipActiveTime',
|
||||
registry.Integer((10*60),
|
||||
registry.Integer((30*60),
|
||||
"""Amount of seconds a user is considered active after answering a question""")
|
||||
)
|
||||
|
||||
|
@ -87,22 +87,22 @@ conf.registerChannelValue(TriviaTime.skip, 'skipTime',
|
|||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.questions, 'hintTime',
|
||||
registry.Integer(10,
|
||||
registry.Integer(15,
|
||||
"""Seconds between hints""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.kaos, 'hintKAOS',
|
||||
registry.Integer(15,
|
||||
registry.Integer(20,
|
||||
"""Seconds between KAOS hints""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.general, 'waitTime',
|
||||
registry.Integer(15,
|
||||
registry.Integer(20,
|
||||
"""Seconds between the end of one question and the start of another""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.voice, 'enableVoice',
|
||||
registry.Boolean(True,
|
||||
registry.Boolean(False,
|
||||
"""Voice top players for week, month, and year""")
|
||||
)
|
||||
|
||||
|
@ -117,42 +117,42 @@ conf.registerChannelValue(TriviaTime.voice, 'timeoutVoice',
|
|||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.voice, 'numTopToVoice',
|
||||
registry.Integer(10,
|
||||
registry.Integer(25,
|
||||
"""The number of top players who are elligible for voice""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.voice, 'minPointsVoiceWeek',
|
||||
registry.Integer(30000,
|
||||
registry.Integer(750,
|
||||
"""Points required to be voiced for being top player in the week""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.voice, 'minPointsVoiceMonth',
|
||||
registry.Integer(100000,
|
||||
registry.Integer(5000,
|
||||
"""Points required to be voiced for being top player in the month""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.voice, 'minPointsVoiceYear',
|
||||
registry.Integer(5000000,
|
||||
registry.Integer(25000,
|
||||
"""Points required to be voiced for being top player in the year""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.kaos, 'payoutKAOS',
|
||||
registry.Integer(1000,
|
||||
registry.Integer(10,
|
||||
"""Extra points for teamwork on KAOS""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.general, 'timeout',
|
||||
registry.Integer(600,
|
||||
registry.Integer(604800,
|
||||
"""Time before game shuts off in seconds""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.questions, 'defaultPoints',
|
||||
registry.Integer(500,
|
||||
registry.Integer(10,
|
||||
"""Default points for a correct answer to a normal question""")
|
||||
)
|
||||
|
||||
conf.registerChannelValue(TriviaTime.kaos, 'defaultKAOS',
|
||||
registry.Integer(300,
|
||||
registry.Integer(15,
|
||||
"""Default points for a correct KAOS answer""")
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="hero-unit">
|
||||
<h1>About TriviaTime</h1>
|
||||
<p>We are <a href="irc://irc.freenode.net/#trivialand">#trivialand</a> on Freenode. Come join us!</p>
|
||||
<p>We are <a href="irc://irc.snoonet.org/#trivia">#trivia</a> on Snoonet. Come join us!</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span12">
|
||||
|
@ -11,7 +11,7 @@
|
|||
<div class="row">
|
||||
<div class="span12">
|
||||
<h2>Source</h2>
|
||||
<p>The source code is available on <a target="_blank" href="https://github.com/tannn/TriviaTime">GitHub</a>, be sure to check it out.
|
||||
<p>The source code is available on <a target="_blank" href="https://github.com/oddluck/limnoria-plugins">GitHub</a>, be sure to check it out.
|
||||
Fork us and contribute!</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="footer">
|
||||
<p>© Trivialand 2013 - <a target="_blank" href="https://github.com/tannn/TriviaTime">GitHub</a></p>
|
||||
<p><a target="_blank" href="https://github.com/oddluck/limnoria-plugins">GitHub</a></p>
|
||||
</div>
|
||||
|
||||
</div> <!-- /container -->
|
||||
|
|
|
@ -194,14 +194,14 @@ class Game:
|
|||
if ircutils.toLower(self.lastWinner) != usernameCanonical:
|
||||
#streakbreak
|
||||
if self.streak > minStreak:
|
||||
streakBonus = points * .05
|
||||
streakBonus = int(points * .25)
|
||||
self.sendMessage('\x02%s\x02 broke \x02%s\x02\'s streak of \x02%d\x02!' % (username, self.lastWinner, self.streak))
|
||||
self.lastWinner = username
|
||||
self.streak = 1
|
||||
else:
|
||||
self.streak += 1
|
||||
streakBonus = points * .01 * (self.streak-1)
|
||||
streakBonus = min(streakBonus, points * .5)
|
||||
streakBonus = points * .25 * (self.streak-1)
|
||||
streakBonus = int(min(streakBonus, points * .25))
|
||||
|
||||
# Update database
|
||||
threadStorage.updateGameStreak(self.channel, self.lastWinner, self.streak)
|
||||
|
@ -212,7 +212,7 @@ class Game:
|
|||
|
||||
# Show congratulatory message
|
||||
self.lastAnswer = time.time()
|
||||
self.sendMessage('DING DING DING, \x02%s\x02 got the correct answer, \x02%s\x02, in \x02%0.4f\x02 seconds for \x02%d(+%d)\x02 points!' % (username, correctAnswer, timeElapsed, points, streakBonus))
|
||||
self.sendMessage('YES, \x02%s\x02 got the correct answer, \x02%s\x02, in \x02%0.4f\x02 seconds for \x02%d(+%d)\x02 points!' % (username, correctAnswer, timeElapsed, points, streakBonus))
|
||||
|
||||
if self.registryValue('general.showStats', self.channel):
|
||||
if self.registryValue('general.globalStats'):
|
||||
|
@ -224,16 +224,19 @@ class Game:
|
|||
todaysScore = stat['points_day']
|
||||
weekScore = stat['points_week']
|
||||
monthScore = stat['points_month']
|
||||
yearScore = stat['points_year']
|
||||
totalScore = stat['points_total']
|
||||
recapMessageList = ['\x02%s\x02 has won \x02%d\x02 in a row!' % (username, self.streak)]
|
||||
recapMessageList.append(' Total Points')
|
||||
recapMessageList.append(' TODAY: \x02%d\x02' % (todaysScore))
|
||||
if weekScore > points:
|
||||
recapMessageList.append(' this WEEK \x02%d\x02' % (weekScore))
|
||||
if weekScore > points or todaysScore > points:
|
||||
if monthScore > points:
|
||||
recapMessageList.append(' &')
|
||||
recapMessageList.append(' this WEEK: \x02%d\x02' % (weekScore))
|
||||
if monthScore > points:
|
||||
recapMessageList.append(' this MONTH: \x02%d\x02' % (monthScore))
|
||||
if yearScore > points:
|
||||
recapMessageList.append(' this YEAR: \x02%d\x02' % (yearScore))
|
||||
if totalScore > points:
|
||||
recapMessageList.append(' & ALL TIME: \x02%d\x02' % (totalScore))
|
||||
recapMessage = ''.join(recapMessageList)
|
||||
self.sendMessage(recapMessage)
|
||||
|
||||
|
@ -587,12 +590,13 @@ class Game:
|
|||
if len(questionParts) > 1:
|
||||
question = questionParts[0].strip()
|
||||
answers = []
|
||||
# Parse question and answers
|
||||
# Parse question for KAOS
|
||||
if ircutils.toLower(question[:4]) == 'kaos':
|
||||
questionType = 'kaos'
|
||||
for ans in questionParts[1:]:
|
||||
if answers.count(ans) == 0: # Filter out duplicate answers
|
||||
answers.append(str(ans).strip())
|
||||
# Parse question for Unscramble
|
||||
elif ircutils.toLower(question[:5]) == 'uword':
|
||||
questionType = 'uword'
|
||||
ans = questionParts[1]
|
||||
|
@ -600,11 +604,13 @@ class Game:
|
|||
shuffledLetters = list(str(ans))
|
||||
random.shuffle(shuffledLetters)
|
||||
question = 'Unscramble the letters: {0}'.format(' '.join(shuffledLetters))
|
||||
# Parse standard question
|
||||
else:
|
||||
questionType = 'regular'
|
||||
for ans in questionParts[1:]:
|
||||
answers.append(str(ans).strip())
|
||||
|
||||
# Calculate base points
|
||||
if questionType == 'kaos':
|
||||
points = self.registryValue('kaos.defaultKAOS', self.channel) * len(answers)
|
||||
else:
|
||||
|
@ -628,9 +634,9 @@ class Game:
|
|||
# default question, everything went wrong with grabbing question
|
||||
return {'id': rawData['id'],
|
||||
'type': 'kaos',
|
||||
'points': 10050,
|
||||
'question': 'KAOS: The 10 Worst U.S. Presidents (Last Name Only)? (This is a panic question, if you see this report this question. it is malformed.)',
|
||||
'answers': ['Bush', 'Nixon', 'Hoover', 'Grant', 'Johnson', 'Ford', 'Reagan', 'Coolidge', 'Pierce']
|
||||
'points': 10,
|
||||
'question': 'KAOS: The most awesome users in this channel? (This is a panic question, if you see this report this question. it is malformed. Please report immediately.)',
|
||||
'answers': ['cars', 'some_weirdo', 'kessa', 'paimun']
|
||||
}
|
||||
|
||||
def sendMessage(self, msg, color=None, bgcolor=None):
|
||||
|
@ -1452,11 +1458,11 @@ class Storage:
|
|||
c.close()
|
||||
return row
|
||||
|
||||
def getDeleteTop3(self, page=1, amount=3, channel=None):
|
||||
def getDeleteTop5(self, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page=1
|
||||
if amount < 1:
|
||||
amount=3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -1493,11 +1499,11 @@ class Storage:
|
|||
c.close()
|
||||
return row
|
||||
|
||||
def getReportTop3(self, page=1, amount=3, channel=None):
|
||||
def getReportTop5(self, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page=1
|
||||
if amount < 1:
|
||||
amount=3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -1516,11 +1522,11 @@ class Storage:
|
|||
c.close()
|
||||
return rows
|
||||
|
||||
def getTemporaryQuestionTop3(self, page=1, amount=3, channel=None):
|
||||
def getTemporaryQuestionTop5(self, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page=1
|
||||
if amount < 1:
|
||||
amount=3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -1558,11 +1564,11 @@ class Storage:
|
|||
c.close()
|
||||
return row
|
||||
|
||||
def getEditTop3(self, page=1, amount=3, channel=None):
|
||||
def getEditTop5(self, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page = 1
|
||||
if amount < 1:
|
||||
amount = 3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -1581,11 +1587,11 @@ class Storage:
|
|||
c.close()
|
||||
return rows
|
||||
|
||||
def getNotMyEditTop3(self, username, page=1, amount=3, channel=None):
|
||||
def getNotMyEditTop5(self, username, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page = 1
|
||||
if amount < 1:
|
||||
amount = 3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -1606,11 +1612,11 @@ class Storage:
|
|||
c.close()
|
||||
return rows
|
||||
|
||||
def getMyEditTop3(self, username, page=1, amount=3, channel=None):
|
||||
def getMyEditTop5(self, username, page=1, amount=5, channel=None):
|
||||
if page < 1:
|
||||
page = 1
|
||||
if amount < 1:
|
||||
amount = 3
|
||||
amount = 5
|
||||
page -= 1
|
||||
start = page * amount
|
||||
c = self.conn.cursor()
|
||||
|
@ -3110,7 +3116,7 @@ class TriviaTime(callbacks.Plugin):
|
|||
delete = threadStorage.getDeleteById(num, channel)
|
||||
|
||||
if delete:
|
||||
if username == delete['username']:
|
||||
if username == delete['username'] and self.isTriviaMod(hostmask, channel) == False:
|
||||
irc.reply('You cannot accept your own deletion request.')
|
||||
else:
|
||||
questionNumber = delete['line_num']
|
||||
|
@ -3304,7 +3310,10 @@ class TriviaTime(callbacks.Plugin):
|
|||
Parameter is optional, display up to that number. (eg 20 - display 11-20)
|
||||
Channel is only required when using the command outside of a channel.
|
||||
"""
|
||||
if num is not None:
|
||||
num = max(num, 10)
|
||||
else:
|
||||
num = 10
|
||||
offset = num-9
|
||||
dbLocation = self.registryValue('admin.db')
|
||||
threadStorage = Storage(dbLocation)
|
||||
|
@ -3433,12 +3442,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countDeletes()
|
||||
else:
|
||||
count = threadStorage.countDeletes(channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
deletes = threadStorage.getDeleteTop3(page)
|
||||
else:
|
||||
deletes = threadStorage.getDeleteTop3(page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
deletes = threadStorage.getDeleteTop5(page)
|
||||
else:
|
||||
deletes = threadStorage.getDeleteTop5(page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3472,12 +3484,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countEdits()
|
||||
else:
|
||||
count = threadStorage.countEdits(channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getEditTop3(page)
|
||||
else:
|
||||
edits = threadStorage.getEditTop3(page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getEditTop5(page)
|
||||
else:
|
||||
edits = threadStorage.getEditTop5(page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3510,12 +3525,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countMyEdits(username)
|
||||
else:
|
||||
count = threadStorage.countMyEdits(username, channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getMyEditTop3(username, page)
|
||||
else:
|
||||
edits = threadStorage.getMyEditTop3(username, page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getMyEditTop5(username, page)
|
||||
else:
|
||||
edits = threadStorage.getMyEditTop5(username, page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3548,12 +3566,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countNotMyEdits(username)
|
||||
else:
|
||||
count = threadStorage.countNotMyEdits(username, channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getNotMyEditTop3(username, page)
|
||||
else:
|
||||
edits = threadStorage.getNotMyEditTop3(username, page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
edits = threadStorage.getNotMyEditTop5(username, page)
|
||||
else:
|
||||
edits = threadStorage.getNotMyEditTop5(username, page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3580,12 +3601,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countReports()
|
||||
else:
|
||||
count = threadStorage.countReports(channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
reports = threadStorage.getReportTop3(page)
|
||||
else:
|
||||
reports = threadStorage.getReportTop3(page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
reports = threadStorage.getReportTop5(page)
|
||||
else:
|
||||
reports = threadStorage.getReportTop5(page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3617,12 +3641,15 @@ class TriviaTime(callbacks.Plugin):
|
|||
count = threadStorage.countTemporaryQuestions()
|
||||
else:
|
||||
count = threadStorage.countTemporaryQuestions(channel)
|
||||
pages = int(count / 3) + int(count % 3 > 0)
|
||||
pages = int(count / 5) + int(count % 5 > 0)
|
||||
if page is not None:
|
||||
page = max(1, min(page, pages))
|
||||
if self.registryValue('general.globalstats'):
|
||||
q = threadStorage.getTemporaryQuestionTop3(page)
|
||||
else:
|
||||
q = threadStorage.getTemporaryQuestionTop3(page, channel=channel)
|
||||
page = 1
|
||||
if self.registryValue('general.globalstats'):
|
||||
q = threadStorage.getTemporaryQuestionTop5(page)
|
||||
else:
|
||||
q = threadStorage.getTemporaryQuestionTop5(page, channel=channel)
|
||||
|
||||
# Output list
|
||||
if count < 1:
|
||||
|
@ -3646,7 +3673,7 @@ class TriviaTime(callbacks.Plugin):
|
|||
threadStorage = Storage(dbLocation)
|
||||
totalUsersEver = threadStorage.getNumUser(channel)
|
||||
numActiveThisWeek = threadStorage.getNumActiveThisWeek(channel)
|
||||
infoText = ' TriviaTime v1.3.2 by Trivialand on Freenode: https://github.com/tannn/TriviaTime '
|
||||
infoText = ' TriviaTime fork for #trivia on Snoonet: https://github.com/oddluck/limnoria-plugins'
|
||||
self.reply(irc, msg, infoText, prefixNick=False)
|
||||
infoText = '\x02 %d Users\x02 on scoreboard with \x02%d Active This Week\x02' % (totalUsersEver, numActiveThisWeek)
|
||||
self.reply(irc, msg, infoText, prefixNick=False)
|
||||
|
@ -3692,18 +3719,26 @@ class TriviaTime(callbacks.Plugin):
|
|||
else:
|
||||
hasPoints = False
|
||||
infoList = ['%s\'s Stats: Points (answers)' % (self.addZeroWidthSpace(stat['username']))]
|
||||
if rank['day'] is not None and stat['points_day'] is not None and stat['answer_day'] is not None:
|
||||
if rank['day'] > 0 or stat['points_day'] > 0 or stat['answer_day'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02Today:\x02 #%d %d (%d)' % (rank['day'], stat['points_day'], stat['answer_day']))
|
||||
if rank['week'] is not None and stat['points_week'] is not None and stat['answer_week'] is not None:
|
||||
if rank['week'] > 0 or stat['points_week'] > 0 or stat['answer_week'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Week:\x02 #%d %d (%d)' % (rank['week'], stat['points_week'], stat['answer_week']))
|
||||
if rank['month'] is not None and stat['points_month'] is not None and stat['answer_month'] is not None:
|
||||
if rank['month'] > 0 or stat['points_month'] > 0 or stat['answer_week'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Month:\x02 #%d %d (%d)' % (rank['month'], stat['points_month'], stat['answer_month']))
|
||||
if rank['year'] is not None and stat['points_year'] is not None and stat['answer_year'] is not None:
|
||||
if rank['year'] > 0 or stat['points_year'] > 0 or stat['answer_year'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Year:\x02 #%d %d (%d)' % (rank['year'], stat['points_year'], stat['answer_year']))
|
||||
if rank['total'] is not None and stat['points_total'] is not None and stat['answer_total'] is not None:
|
||||
if rank['total'] > 0 or stat['points_total'] > 0 or stat['answer_total'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02All Time:\x02 #%d %d (%d)' % (rank['total'], stat['points_total'], stat['answer_total']))
|
||||
if not hasPoints:
|
||||
infoList = ['%s: You do not have any points.' % (username)]
|
||||
if not identified:
|
||||
|
@ -3718,7 +3753,10 @@ class TriviaTime(callbacks.Plugin):
|
|||
Parameter is optional, display up to that number. (eg 20 - display 11-20)
|
||||
Channel is only required when using the command outside of a channel.
|
||||
"""
|
||||
if num is not None:
|
||||
num = max(num, 10)
|
||||
else:
|
||||
num = 10
|
||||
offset = num-9
|
||||
dbLocation = self.registryValue('admin.db')
|
||||
threadStorage = Storage(dbLocation)
|
||||
|
@ -4016,7 +4054,7 @@ class TriviaTime(callbacks.Plugin):
|
|||
# Update skip count
|
||||
game.skipList.append(usernameCanonical)
|
||||
game.skipTimeoutList.append(usernameCanonical)
|
||||
self.reply(irc, msg, '%s voted to skip this question.' % username, prefixNick=False)
|
||||
self.reply(irc, msg, '%s voted to skip this question.' % username, (len(game.skipList), totalActive), prefixNick=False)
|
||||
skipPercent = len(game.skipList)/(totalActive*1.0)
|
||||
|
||||
# Check if skip threshold has been reached
|
||||
|
@ -4045,18 +4083,26 @@ class TriviaTime(callbacks.Plugin):
|
|||
else:
|
||||
hasPoints = False
|
||||
infoList = ['%s\'s Stats: Points (answers)' % (self.addZeroWidthSpace(stat['username']))]
|
||||
if rank['day'] is not None and stat['points_day'] is not None and stat['answer_day'] is not None:
|
||||
if rank['day'] > 0 or stat['points_day'] > 0 or stat['answer_day'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02Today:\x02 #%d %d (%d)' % (rank['day'], stat['points_day'], stat['answer_day']))
|
||||
if rank['week'] is not None and stat['points_week'] is not None and stat['answer_week'] is not None:
|
||||
if rank['week'] > 0 or stat['points_week'] > 0 or stat['answer_week'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Week:\x02 #%d %d (%d)' % (rank['week'], stat['points_week'], stat['answer_week']))
|
||||
if rank['month'] is not None and stat['points_month'] is not None and stat['answer_month'] is not None:
|
||||
if rank['month'] > 0 or stat['points_month'] > 0 or stat['answer_month'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Month:\x02 #%d %d (%d)' % (rank['month'], stat['points_month'], stat['answer_month']))
|
||||
if rank['year'] is not None and stat['points_year'] is not None and stat['answer_year'] is not None:
|
||||
if rank['year'] > 0 or stat['points_year'] > 0 or stat['answer_year'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02This Year:\x02 #%d %d (%d)' % (rank['year'], stat['points_year'], stat['answer_year']))
|
||||
if rank['total'] is not None and stat['points_total'] is not None and stat['answer_total'] is not None:
|
||||
if rank['total'] > 0 or stat['points_total'] > 0 or stat['answer_total'] > 0:
|
||||
hasPoints = True
|
||||
infoList.append(' \x02All Time:\x02 #%d %d (%d)' % (rank['total'], stat['points_total'], stat['answer_total']))
|
||||
if not hasPoints:
|
||||
infoList = ['%s: %s does not have any points.' % (msg.nick, username)]
|
||||
infoText = ''.join(infoList)
|
||||
|
@ -4275,6 +4321,34 @@ class TriviaTime(callbacks.Plugin):
|
|||
self.reply(irc, msg, 'The current server time appears to be {0}'.format(timeStr), prefixNick=False)
|
||||
time = wrap(time)
|
||||
|
||||
def top(self, irc, msg, arg, channel, num):
|
||||
"""[<channel>] [<number>]
|
||||
Displays the top scores of all time.
|
||||
Parameter is optional, display up to that number. (eg 20 - display 11-20)
|
||||
Channel is only required when using the command outside of a channel.
|
||||
"""
|
||||
if num is not None:
|
||||
num = max(num, 10)
|
||||
else:
|
||||
num = 10
|
||||
offset = num-9
|
||||
dbLocation = self.registryValue('admin.db')
|
||||
threadStorage = Storage(dbLocation)
|
||||
if self.registryValue('general.globalStats'):
|
||||
tops = threadStorage.viewAllTimeTop10(None, num)
|
||||
else:
|
||||
tops = threadStorage.viewAllTimeTop10(channel, num)
|
||||
|
||||
topsList = ['All Time Top {0}-{1} Players: '.format(offset, num)]
|
||||
if tops:
|
||||
for i in range(len(tops)):
|
||||
topsList.append('\x02 #%d:\x02 %s %d ' % ((i+offset) , self.addZeroWidthSpace(tops[i]['username']), tops[i]['points']))
|
||||
else:
|
||||
topsList.append('No players')
|
||||
topsText = ''.join(topsList)
|
||||
self.reply(irc, msg, topsText, prefixNick=False)
|
||||
top = wrap(top, ['channel', optional('int')])
|
||||
|
||||
def transferpoints(self, irc, msg, arg, channel, userfrom, userto):
|
||||
"""[<channel>] <userfrom> <userto>
|
||||
Transfers all points and records from one user to another.
|
||||
|
@ -4300,7 +4374,10 @@ class TriviaTime(callbacks.Plugin):
|
|||
Parameter is optional, display up to that number. (eg 20 - display 11-20)
|
||||
Channel is only required when using the command outside of a channel.
|
||||
"""
|
||||
if num is not None:
|
||||
num = max(num, 10)
|
||||
else:
|
||||
num = 10
|
||||
offset = num-9
|
||||
dbLocation = self.registryValue('admin.db')
|
||||
threadStorage = Storage(dbLocation)
|
||||
|
@ -4325,7 +4402,10 @@ class TriviaTime(callbacks.Plugin):
|
|||
Parameter is optional, display up to that number. (eg 20 - display 11-20)
|
||||
Channel is only required when using the command outside of a channel.
|
||||
"""
|
||||
if num is not None:
|
||||
num = max(num, 10)
|
||||
else:
|
||||
num = 10
|
||||
offset = num-9
|
||||
dbLocation = self.registryValue('admin.db')
|
||||
threadStorage = Storage(dbLocation)
|
||||
|
|
Loading…
Reference in New Issue