Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions bot/exts/levels/_cog.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ async def _cycle_rules_task(self) -> None:
rule_trigger for rule in self.rules_active
for rule_trigger in rule.rule_triggers if rule_trigger.interaction_type=="reaction"
]
self.all_message_rule_triggers = [
rule_trigger for rule in self.rules_all
for rule_trigger in rule.rule_triggers if rule_trigger.interaction_type=="message"
]
# [rule for rule in self.rules_active if rule.interaction_type=="reaction"]
# self.active_message_rule_triggers = [rule for rule in self.rules_active if rule.interaction_type=="message"]

Expand Down Expand Up @@ -194,6 +198,9 @@ async def _update_role_assignment(self, user_id: int) -> None:
user = await members.get_or_fetch_member(guild, user_id)
if role in user.roles:
return
for user_role in user.roles:
if user_role in LEVEL_ROLES:
await members.handle_role_change(user, user.remove_roles, user_role)
logger.debug(f"Assigning {role.name} to {user.name}")
await members.handle_role_change(user, user.add_roles, role)

Expand Down Expand Up @@ -224,6 +231,15 @@ async def on_message(self, msg: discord.Message) -> None:
user_id = msg.author.id
await self._update_points(user_id, total_points)

total_rule_matches = 0
for rule_trigger in self.all_message_rule_triggers:
re_pattern = rule_trigger.message_content
match = re.search(re_pattern, msg.content)
if match:
total_rule_matches += 1
if total_rule_matches >= 3:
await self._update_points(user_id, -5)


@commands.Cog.listener()
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.Member) -> None:
Expand Down
10 changes: 10 additions & 0 deletions bot/exts/levels/rules/monty_python.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,13 @@ points = 3
interaction_type = "message"
message_content = '''\b(IDLE|Idle|Cleese|Gilliam|Jones|Chapman|Palin)\b'''
points = 1

[[rule]]
interaction_type = "message"
message_content = '''\b(\'[Tt]is but a scratch)\b'''
points = 1

[[rule]]
interaction_type = "message"
message_content = '''\b([Ff]light [Ss]peed|[Uu]nladen [Ss]wallow|[Aa]frican or [Ee]uropean)\b'''
points = 2
Loading