Skip to content

Commit bc667a9

Browse files
author
omame
committed
feat: moderator mode
chore: bump version closes #5
1 parent 7680c82 commit bc667a9

File tree

7 files changed

+17
-13
lines changed

7 files changed

+17
-13
lines changed

bob/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""
22
Constants used by bob.
33
"""
4-
__version__ = "2.7.4"
4+
__version__ = "2.8.0"
55

66
import random
77

cogs/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def __init__(self, client: commands.Bot):
4040
for question in questions:
4141
self.question_map.update({question.text + str(question.guild): question})
4242
del questions
43-
self.logger.debug("loaded %d questions.", len(self.question_map.keys()))
43+
self.logger.debug("loaded %d questions.", len(self.question_map))
4444

4545
if os.path.exists("config.json"):
4646
self.logger.debug("loading config...")

cogs/configuration.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ def __init__(self, client: commands.Bot):
1616
@commands.has_permissions(manage_channels=True)
1717
@commands.hybrid_command(brief="Sets the channel that bob will talk in.")
1818
async def channel(self, ctx: commands.Context, channel: discord.TextChannel):
19-
if not ctx.author.resolved_permissions.manage_channels:
20-
return await ctx.reply("You're not allowed to use this command!")
2119
self.logger.debug(f"setting guild {ctx.guild.id}'s channel to {channel.id}")
2220
if str(ctx.guild.id) not in self.config.config["guilds"].keys():
2321
self.config.config["guilds"].update({str(ctx.guild.id): {"channel": channel.id}})

cogs/lar.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# LaR: Learn and Reply
2-
import typing
3-
42
import qna
53
import discord
64
import logging
5+
from cogs.modmode import DeleteView, ModMode
76
from cogs.config import Config
87
from discord.ext import commands
98

@@ -12,8 +11,9 @@ class LaR(commands.Cog):
1211
def __init__(self, client: commands.Bot):
1312
self.client = client
1413
self.logger = logging.getLogger("cogs.LaR")
15-
self.config: typing.Union[Config, None] = client.get_cog("Config")
14+
self.config: Config | None = client.get_cog("Config")
1615
self.logger.debug("registered.")
16+
self.mod_mode: ModMode | None = self.client.get_cog("ModMode")
1717

1818
async def learn(self, message: discord.Message):
1919
if message.author.id in self.config.config["optout"] or message.author.id in self.config.config["blacklist"]:
@@ -59,15 +59,21 @@ async def reply(self, message: discord.Message):
5959
placeholder = "I don't know what to say (give me some time to learn)"
6060
text = placeholder
6161
server_questions = [q for q in self.config.question_map.values() if q.guild == message.guild.id]
62+
question = None
63+
response = None
6264
if len(server_questions):
63-
question = qna.helpers.get_closest_question(server_questions, content,
64-
message.guild.id)
65+
question = qna.helpers.get_closest_question(server_questions, content)
6566
response = qna.helpers.pick_response(question)
6667
text = response.text or placeholder
6768
if message.content.startswith(self.client.command_prefix):
6869
text += "\n(psst, i don't listen to commands here! if you want to run a command, " \
6970
"go to another channel or use slash commands.)"
70-
await message.reply(text)
71+
view = None
72+
if self.mod_mode.is_in_mod_mode(guild, message.author):
73+
view = DeleteView(self.mod_mode, self.config)
74+
message_reply = await message.reply(text, view=view)
75+
if self.mod_mode.is_in_mod_mode(guild, message.author):
76+
self.mod_mode.save_info(guild, message.author, message_reply, question, response)
7177
self.logger.debug(f"reply: {message.clean_content} -> {text}")
7278

7379
@commands.Cog.listener()

cogs/usercommands.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ async def debug(self, ctx: commands.Context, *, prompt: str):
4444
response = None
4545
server_questions = [q for q in self.config.question_map.values() if q.guild == message.guild.id]
4646
if len(server_questions):
47-
question = qna.helpers.get_closest_question(server_questions, content,
48-
message.guild.id)
47+
question = qna.helpers.get_closest_question(server_questions, content)
4948
response = qna.helpers.pick_response(question)
5049
text = response.text or placeholder
5150
embed = None

main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ async def on_command_error(ctx: commands.Context, error):
8888
async def on_ready():
8989
cogs = [
9090
"cogs.config",
91+
"cogs.modmode",
9192
"cogs.lar",
9293
"cogs.configuration",
9394
"cogs.optin",

qna/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def pick_response(question: Question) -> Response:
2626
return response
2727

2828

29-
def get_closest_question(questions: typing.List[Question], message: str, guild_id: int) -> Question:
29+
def get_closest_question(questions: typing.List[Question], message: str) -> Question:
3030
lowest = None
3131
target = None
3232
for question in questions:

0 commit comments

Comments
 (0)