fix (rooms): Also add client to room.

This commit is contained in:
2023-08-17 09:16:37 +03:00
parent 2ac7353f75
commit 8f63fbc526
2 changed files with 51 additions and 23 deletions

View File

@@ -24,7 +24,7 @@ from .settings import RoomSettings
from .settingui import RoomSettingUI
from .room import Room
from .roomui import RoomUI
from .lib import parse_members, owner_overwrite, member_overwrite
from .lib import parse_members, owner_overwrite, member_overwrite, bot_overwrite
_p, _np = babel._p, babel._np
@@ -223,7 +223,8 @@ class RoomCog(LionCog):
# Build permission overwrites for owner and members, take into account visible setting
overwrites = {
owner: owner_overwrite,
guild.default_role: everyone_overwrite
guild.default_role: everyone_overwrite,
guild.me: bot_overwrite,
}
for member in members:
overwrites[member] = member_overwrite
@@ -484,6 +485,7 @@ class RoomCog(LionCog):
await ctx.alion.data.update(coins=CoreData.Member.coins - required)
# Create room with given starting balance and other parameters
try:
room = await self.create_private_room(
ctx.guild,
ctx.author,
@@ -491,6 +493,29 @@ class RoomCog(LionCog):
name or ctx.author.display_name,
members=provided
)
except discord.Forbidden:
await ctx.reply(
embed=error_embed(
t(_p(
'cmd:room_rent|error:my_permissions',
"Could not create your private room! You were not charged.\n"
"I have insufficient permissions to create a private room channel."
)),
)
)
await ctx.alion.data.update(coins=CoreData.Member.coins + required)
except discord.HTTPException as e:
await ctx.reply(
embed=error_embed(
t(_p(
'cmd:room_rent|error:unknown',
"Could not create your private room! You were not charged.\n"
"An unknown error occurred while creating your private room.\n"
"`{error}`"
)).format(error=e.text),
)
)
await ctx.alion.data.update(coins=CoreData.Member.coins + required)
# Ack with confirmation message pointing to the room
msg = t(_p(

View File

@@ -13,29 +13,32 @@ def parse_members(memberstr: str) -> list[int]:
return memberids
owner_overwrite = discord.PermissionOverwrite(
member_overwrite = discord.PermissionOverwrite(
view_channel=True,
manage_channels=True,
manage_webhooks=True,
send_messages=True,
read_message_history=True,
attach_files=True,
embed_links=True,
add_reactions=True,
manage_messages=True,
create_public_threads=True,
create_private_threads=True,
manage_threads=True,
connect=True,
speak=True,
stream=True,
use_application_commands=True,
use_embedded_activities=True,
external_emojis=True,
)
owner_overwrite = discord.PermissionOverwrite.from_pair(*member_overwrite.pair())
owner_overwrite.update(
manage_channels=True,
manage_webhooks=True,
manage_messages=True,
create_public_threads=True,
create_private_threads=True,
manage_threads=True,
move_members=True,
external_emojis=True
)
member_overwrite = discord.PermissionOverwrite(
view_channel=True,
send_messages=True,
connect=True,
speak=True,
stream=True
bot_overwrite = discord.PermissionOverwrite.from_pair(*owner_overwrite.pair())
bot_overwrite.update(
**dict(owner_overwrite),
manage_permissions=True,
)