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 .settingui import RoomSettingUI
from .room import Room from .room import Room
from .roomui import RoomUI 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 _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 # Build permission overwrites for owner and members, take into account visible setting
overwrites = { overwrites = {
owner: owner_overwrite, owner: owner_overwrite,
guild.default_role: everyone_overwrite guild.default_role: everyone_overwrite,
guild.me: bot_overwrite,
} }
for member in members: for member in members:
overwrites[member] = member_overwrite overwrites[member] = member_overwrite
@@ -484,13 +485,37 @@ class RoomCog(LionCog):
await ctx.alion.data.update(coins=CoreData.Member.coins - required) await ctx.alion.data.update(coins=CoreData.Member.coins - required)
# Create room with given starting balance and other parameters # Create room with given starting balance and other parameters
room = await self.create_private_room( try:
ctx.guild, room = await self.create_private_room(
ctx.author, ctx.guild,
required - rent, ctx.author,
name or ctx.author.display_name, required - rent,
members=provided 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 # Ack with confirmation message pointing to the room
msg = t(_p( msg = t(_p(

View File

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