blob: 066ea81751fc5c58d3e6700fff825467c8cee48a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
"""
Sopel plugin: keyword responder
Responds to any channel message containing one of the configured keywords
with a randomly chosen response line. Matching is case-insensitive.
Can be paused/resumed by the owner via !pause / !resume.
[respond]
keywords =
word1
word2
responses =
reply one
reply two
"""
import random
from sopel import plugin
from sopel.config.types import ListAttribute, StaticSection
class RespondSection(StaticSection):
keywords = ListAttribute("keywords")
responses = ListAttribute("responses")
def setup(bot):
bot.settings.define_section("respond", RespondSection)
@plugin.rule(r"(?s:.*)")
@plugin.require_chanmsg
def respond(bot, trigger):
if bot.memory.get("herald_paused"):
return
keywords = bot.settings.respond.keywords
responses = bot.settings.respond.responses
if not keywords or not responses:
return
try:
msg = trigger.group(0).casefold()
if any(kw.casefold() in msg for kw in keywords):
bot.say(random.choice(responses))
except (UnicodeError, AttributeError):
pass
|