capture: add plugin for a little game

This commit is contained in:
dece 2021-06-06 18:28:43 +02:00
parent ab61d807be
commit 7f5ed39722
6 changed files with 63 additions and 4 deletions

2
.gitignore vendored
View file

@ -2,3 +2,5 @@ config.json
storage.json storage.json
resources/* resources/*
!resources/.gitkeep !resources/.gitkeep
venv/
.vim/

View file

@ -22,6 +22,12 @@
"welcome_rate": 10, "welcome_rate": 10,
"farewell_rate": 10 "farewell_rate": 10
}, },
"capture": {
"rate": 0.1,
"things": "🍇🍈🍉🍊🍋🍌🍍🥭🍎🍏🍐🍑🍒🍓",
"capture_sentence": "Catch!",
"captured_sentence": "Well done {winner}, you got that {thing}!"
},
"common": { "common": {
"command_suffix": "please", "command_suffix": "please",
"handling_conditions": { "handling_conditions": {

View file

@ -32,8 +32,9 @@ class Plugin:
For now these levels are used: For now these levels are used:
- 0: default - 0: default
- -3: low, misc parsing of messages, answer to various messages - -3: low, misc parsing of messages, answer to various messages
- -8: handling of unknown commands - -6: handling of unknown commands
- -9: handling of unknown questions - -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 - -10: lowest, e.g. for random reactions usually with a very low rate
""" """

50
edmond/plugins/capture.py Normal file
View 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

View file

@ -16,7 +16,7 @@ class UnknownCommandPlugin(Plugin):
def __init__(self, bot): def __init__(self, bot):
super().__init__(bot) super().__init__(bot)
self.priority = -8 self.priority = -6
self._client = None self._client = None
@property @property

View file

@ -15,7 +15,7 @@ class UnknownQuestionPlugin(Plugin):
def __init__(self, bot): def __init__(self, bot):
super().__init__(bot) super().__init__(bot)
self.priority = -9 self.priority = -7
self.misc_plugin = None self.misc_plugin = None
def on_welcome(self, event): def on_welcome(self, event):