capture: add plugin for a little game

master
dece 3 years ago
parent ab61d807be
commit 7f5ed39722

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
"""

@ -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…
Cancel
Save