capture: add plugin for a little game
This commit is contained in:
parent
ab61d807be
commit
7f5ed39722
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -2,3 +2,5 @@ config.json
|
|||
storage.json
|
||||
resources/*
|
||||
!resources/.gitkeep
|
||||
venv/
|
||||
.vim/
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
"welcome_rate": 10,
|
||||
"farewell_rate": 10
|
||||
},
|
||||
"capture": {
|
||||
"rate": 0.1,
|
||||
"things": "🍇🍈🍉🍊🍋🍌🍍🥭🍎🍏🍐🍑🍒🍓",
|
||||
"capture_sentence": "Catch!",
|
||||
"captured_sentence": "Well done {winner}, you got that {thing}!"
|
||||
},
|
||||
"common": {
|
||||
"command_suffix": "please",
|
||||
"handling_conditions": {
|
||||
|
|
|
@ -32,8 +32,9 @@ class Plugin:
|
|||
For now these levels are used:
|
||||
- 0: default
|
||||
- -3: low, misc parsing of messages, answer to various messages
|
||||
- -8: handling of unknown commands
|
||||
- -9: handling of unknown questions
|
||||
- -6: handling of unknown commands
|
||||
- -7: handling of unknown questions
|
||||
- -8: handling any message that might match something
|
||||
- -10: lowest, e.g. for random reactions usually with a very low rate
|
||||
"""
|
||||
|
||||
|
|
50
edmond/plugins/capture.py
Normal file
50
edmond/plugins/capture.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
"""A little capture game!"""
|
||||
|
||||
import random
|
||||
|
||||
from edmond.plugin import Plugin
|
||||
from edmond.utils import proc
|
||||
|
||||
|
||||
class CapturePlugin(Plugin):
|
||||
|
||||
REQUIRED_CONFIGS = [
|
||||
"rate", "things", "capture_sentence", "captured_sentence"
|
||||
]
|
||||
|
||||
def __init__(self, bot):
|
||||
super().__init__(bot)
|
||||
self.priority = -8
|
||||
self.current_thing = None
|
||||
|
||||
def on_pubmsg(self, event):
|
||||
if self.current_thing is not None:
|
||||
message = event.arguments[0]
|
||||
if message == self.config["capture_sentence"]:
|
||||
self.capture(event.source.nick, event.target)
|
||||
return True
|
||||
return False
|
||||
|
||||
if proc(self.config["rate"]):
|
||||
self.release_thing(event.target)
|
||||
return True
|
||||
return False
|
||||
|
||||
def release_thing(self, target):
|
||||
self.current_thing = random.choice(self.config["things"])
|
||||
self.bot.say(target, f"(>O_O)> ~~{self.current_thing}")
|
||||
|
||||
def capture(self, winner, target):
|
||||
congratz = self.config["captured_sentence"].format(
|
||||
winner=winner,
|
||||
thing=self.current_thing
|
||||
)
|
||||
self.bot.say(target, congratz)
|
||||
|
||||
collections = self.get_storage_value("collections", default={})
|
||||
if winner not in collections:
|
||||
collections[winner] = []
|
||||
collections[winner].append(self.current_thing)
|
||||
self.set_storage_value("collections", collections)
|
||||
|
||||
self.current_thing = None
|
|
@ -16,7 +16,7 @@ class UnknownCommandPlugin(Plugin):
|
|||
|
||||
def __init__(self, bot):
|
||||
super().__init__(bot)
|
||||
self.priority = -8
|
||||
self.priority = -6
|
||||
self._client = None
|
||||
|
||||
@property
|
||||
|
|
|
@ -15,7 +15,7 @@ class UnknownQuestionPlugin(Plugin):
|
|||
|
||||
def __init__(self, bot):
|
||||
super().__init__(bot)
|
||||
self.priority = -9
|
||||
self.priority = -7
|
||||
self.misc_plugin = None
|
||||
|
||||
def on_welcome(self, event):
|
||||
|
|
Loading…
Reference in a new issue