mirror of
https://github.com/deadcxap/YandexMusicDiscordBot.git
synced 2026-01-10 12:31:46 +03:00
up-to-date actual
This commit is contained in:
@@ -5,11 +5,12 @@ import discord
|
||||
from discord.ext.commands import Cog
|
||||
|
||||
from MusicBot.database import BaseUsersDatabase, BaseGuildsDatabase
|
||||
from MusicBot.cogs.utils import BaseBot
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Settings(bot))
|
||||
|
||||
class Settings(Cog):
|
||||
class Settings(Cog, BaseBot):
|
||||
|
||||
settings = discord.SlashCommandGroup("settings", "Команды для изменения настроек бота.")
|
||||
|
||||
@@ -22,7 +23,7 @@ class Settings(Cog):
|
||||
async def show(self, ctx: discord.ApplicationContext) -> None:
|
||||
if not ctx.guild_id:
|
||||
logging.info("[SETTINGS] Show command invoked without guild_id")
|
||||
await ctx.respond("❌ Эта команда может быть использована только на сервере.", ephemeral=True)
|
||||
await self.respond(ctx, "error", "Эта команда может быть использована только на сервере.", ephemeral=True)
|
||||
return
|
||||
|
||||
guild = await self.db.get_guild(ctx.guild_id, projection={
|
||||
@@ -37,6 +38,8 @@ class Settings(Cog):
|
||||
token = "🔐 - Используется токен пользователя, запустившего бота" if guild['use_single_token'] else "🔒 - Используется личный токен пользователя"
|
||||
|
||||
embed = discord.Embed(title="Настройки бота", color=0xfed42b)
|
||||
embed.set_author(name='YandexMusic', icon_url="https://github.com/Lemon4ksan/YandexMusicDiscordBot/blob/main/assets/Logo.png?raw=true")
|
||||
|
||||
embed.add_field(name="__Голосование__", value=vote, inline=False)
|
||||
embed.add_field(name="__Подключение/Отключение__", value=connect, inline=False)
|
||||
embed.add_field(name="__Токен__", value=token, inline=False)
|
||||
@@ -52,8 +55,8 @@ class Settings(Cog):
|
||||
choices=[
|
||||
'Переключение треков без голосования для всех',
|
||||
'Добавление в очередь без голосования для всех',
|
||||
'Добавление/Отключение бота из канала для всех',
|
||||
'Использовать единый токен для прослушивания'
|
||||
'Добавление/Отключение бота от канала для всех',
|
||||
'Использовать токен запустившего пользователя для всех'
|
||||
]
|
||||
)
|
||||
async def toggle(
|
||||
@@ -62,18 +65,18 @@ class Settings(Cog):
|
||||
vote_type: Literal[
|
||||
'Переключение треков без голосования для всех',
|
||||
'Добавление в очередь без голосования для всех',
|
||||
'Добавление/Отключение бота из канала для всех',
|
||||
'Использовать единый токен для прослушивания'
|
||||
'Добавление/Отключение бота от канала для всех',
|
||||
'Использовать токен запустившего пользователя для всех'
|
||||
]
|
||||
) -> None:
|
||||
if not ctx.guild_id:
|
||||
logging.info("[SETTINGS] Toggle command invoked without guild_id")
|
||||
await ctx.respond("❌ Эта команда может быть использована только на сервере.", delete_after=15, ephemeral=True)
|
||||
await self.respond(ctx, "error", "Эта команда может быть использована только на сервере.", delete_after=15, ephemeral=True)
|
||||
return
|
||||
|
||||
member = cast(discord.Member, ctx.user)
|
||||
if not member.guild_permissions.manage_channels:
|
||||
await ctx.respond("❌ У вас нет прав для выполнения этой команды.", delete_after=15, ephemeral=True)
|
||||
await self.respond(ctx, "error", "У вас нет прав для выполнения этой команды.", delete_after=15, ephemeral=True)
|
||||
return
|
||||
|
||||
guild = await self.db.get_guild(ctx.guild_id, projection={
|
||||
@@ -88,15 +91,15 @@ class Settings(Cog):
|
||||
await self.db.update(ctx.guild_id, {'vote_add': not guild['vote_add']})
|
||||
response_message = "Голосование за добавление в очередь " + ("❌ выключено." if guild['vote_add'] else "✅ включено.")
|
||||
|
||||
elif vote_type == 'Добавление/Отключение бота из канала для всех':
|
||||
elif vote_type == 'Добавление/Отключение бота от канала для всех':
|
||||
await self.db.update(ctx.guild_id, {'allow_change_connect': not guild['allow_change_connect']})
|
||||
response_message = f"Добавление/Отключение бота от канала теперь {'✅ разрешено' if not guild['allow_change_connect'] else '❌ запрещено'} участникам без прав управления каналом."
|
||||
|
||||
elif vote_type == 'Использовать единый токен для прослушивания':
|
||||
elif vote_type == 'Использовать токен запустившего пользователя для всех':
|
||||
await self.db.update(ctx.guild_id, {'use_single_token': not guild['use_single_token']})
|
||||
response_message = f"Использование единого токена для прослушивания теперь {'✅ включено' if not guild['use_single_token'] else '❌ выключено'}."
|
||||
|
||||
else:
|
||||
response_message = "❌ Неизвестный тип голосования."
|
||||
response_message = "Неизвестный тип настроек."
|
||||
|
||||
await ctx.respond(response_message, delete_after=15, ephemeral=True)
|
||||
await self.respond(ctx, 'info', response_message, delete_after=30, ephemeral=True)
|
||||
|
||||
Reference in New Issue
Block a user