Add custom embed
This commit is contained in:
@@ -13,7 +13,35 @@ class Settings:
|
||||
self.emoji_source_raw = settings.get("emoji_source_raw", {})
|
||||
self.cooldowns_settings = settings.get("cooldowns", {})
|
||||
self.aliases_settings = settings.get("aliases", {})
|
||||
self.controller_settings = settings.get("controller", [["back", "resume", "skip", {"stop": "red"}, "add"], ["tracks"]])
|
||||
self.controller = settings.get("default_controller",
|
||||
{
|
||||
"embeds": {
|
||||
"active": {
|
||||
"description": "**Now Playing: ```[@@track_name@@]```\nLink: [Click Me](@@track_url@@) | Requester: @@requester@@ | DJ: @@dj@@**",
|
||||
"footer": {
|
||||
"text": "Queue Length: @@queue_length@@ | Duration: @@duration@@ | Volume: @@volume@@% {{loop_mode!=Off ?? | Repeat: @@loop_mode@@}}",
|
||||
},
|
||||
"image": "@@track_thumbnail@@",
|
||||
"author": {
|
||||
"name": "Music Controller | @@channel_name@@",
|
||||
"icon_url": "@@bot_icon@@"
|
||||
},
|
||||
"color": "@@default_embed_color@@"
|
||||
},
|
||||
"inactive": {
|
||||
"header": {
|
||||
"title": "There are no songs playing right now"
|
||||
},
|
||||
"description": "[Support](@@server_invite_link@@) | [Invite](@@invite_link@@) | [Questionnaire](https://forms.gle/Qm8vjBfg2kp13YGD7)",
|
||||
"image": "https://i.imgur.com/dIFBwU7.png",
|
||||
"color": "@@default_embed_color@@"
|
||||
}
|
||||
},
|
||||
"default_buttons": [
|
||||
["back", "resume", "skip", {"stop": "red"}, "add"],
|
||||
["tracks"]
|
||||
]
|
||||
})
|
||||
self.lyrics_platform = settings.get("lyrics_platform", "A_ZLyrics").lower()
|
||||
self.ipc_server = settings.get("ipc_server", {
|
||||
"host": "127.0.0.1",
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
"playlistrepeated": "您的播放列表中已經有相同的曲目!",
|
||||
"playlistAdded": "❤️ 將 **{0}** 添加到 {1} 的播放列表 [`{2}`]!",
|
||||
|
||||
"playerAuthor": "音樂控制器 | {0}",
|
||||
"playerDesc": "**現在播放: ```[{0}]```\n鏈接: [點擊我]({1}) | 請求者: {2} | DJ: {3}**",
|
||||
"playerFooter": "隊列長度: {0} | 時長: {1} | 音量: {2}% {3}",
|
||||
"playerFooter2": "| 重複: {0}",
|
||||
"playerDropdown": "選擇要跳到的歌曲...",
|
||||
|
||||
"buttonBack": "後退",
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
"playlistrepeated": "Es gibt bereits denselben Titel in Ihrer Playlist!",
|
||||
"playlistAdded": "❤️ **{0}** zur Playlist [`{2}`] von {1} hinzugefügt!",
|
||||
|
||||
"playerAuthor": "Musik-Controller | {0}",
|
||||
"playerDesc": "**Läuft gerade: ```[{0}]```\nLink: [Klick mich]({1}) | Anforderer: {2} | DJ: {3}**",
|
||||
"playerFooter": "Warteschlangelänge: {0} | Dauer: {1} | Lautstärke: {2}% {3}",
|
||||
"playerFooter2": "| Wiederholen: {0}",
|
||||
"playerDropdown": "Wählen Sie einen Song aus, zudem Sie springen möchten...",
|
||||
|
||||
"buttonBack": "Zurück",
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
"playlistrepeated": "There is already the same track in your playlist!",
|
||||
"playlistAdded": "❤️ Added **{0}** into {1}'s playlist [`{2}`]!",
|
||||
|
||||
"playerAuthor": "Music Controller | {0}",
|
||||
"playerDesc": "**Now Playing: ```[{0}]```\nLink: [Click Me]({1}) | Requester: {2} | DJ: {3}**",
|
||||
"playerFooter": "Queue Length: {0} | Duration: {1} | Volume: {2}% {3}",
|
||||
"playerFooter2": "| Repeat: {0}",
|
||||
"playerDropdown": "Select a song to skip to ...",
|
||||
|
||||
"buttonBack": "Back",
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
"playlistrepeated": "プレイリストにはすでに同じトラックがあります!",
|
||||
"playlistAdded": "❤️ {1}のプレイリスト[`{2}`]に** {0} **を追加しました!",
|
||||
|
||||
"playerAuthor": "ミュージックコントローラー | {0}",
|
||||
"playerDesc": "**再生中: ```[{0}]```\nリンク: [クリックしてください]({1}) | リクエスター: {2} | DJ: {3}**",
|
||||
"playerFooter": "キューの長さ: {0} | 間隔: {1} | 音量: {2}% {3}",
|
||||
"playerFooter2": "| 繰り返す: {0}",
|
||||
"playerDropdown": "スキップする曲を選択してください...",
|
||||
|
||||
"buttonBack": "戻る",
|
||||
|
||||
@@ -106,10 +106,6 @@
|
||||
"playlistrepeated": "재생 목록에 이미 같은 트랙이 있습니다!",
|
||||
"playlistAdded": "❤️ **{0}**을 {1}의 재생목록 [`{2}`]에 추가했습니다!",
|
||||
|
||||
"playerAuthor": "음악 컨트롤러 | {0}",
|
||||
"playerDesc": "**지금 재생 중: ```[{0}]```\n링크: [클릭 해주세요]({1}) | 요청자: {2} | DJ: {3}**",
|
||||
"playerFooter": "대기열 길이: {0} | 지속: {1} | 무게: {2}% {3}",
|
||||
"playerFooter2": "| 반복하다: {0}",
|
||||
"playerDropdown": "건너뛸 노래 선택 ...",
|
||||
|
||||
"buttonBack": "뒤",
|
||||
|
||||
@@ -33,10 +33,34 @@
|
||||
"reddit": "<:reddit:996007566863773717>",
|
||||
"tiktok": "<:tiktok:996007689798811698>"
|
||||
},
|
||||
"controller": [
|
||||
["back", "resume", "skip", {"stop": "red"}, "add"],
|
||||
["tracks"]
|
||||
],
|
||||
"default_controller": {
|
||||
"embeds": {
|
||||
"active": {
|
||||
"description": "**Now Playing: ```[@@track_name@@]```\nLink: [Click Me](@@track_url@@) | Requester: @@requester@@ | DJ: @@dj@@**",
|
||||
"footer": {
|
||||
"text": "Queue Length: @@queue_length@@ | Duration: @@duration@@ | Volume: @@volume@@% {{loop_mode!=Off ?? | Repeat: @@loop_mode@@}}"
|
||||
},
|
||||
"image": "@@track_thumbnail@@",
|
||||
"author": {
|
||||
"name": "Music Controller | @@channel_name@@",
|
||||
"icon_url": "@@bot_icon@@"
|
||||
},
|
||||
"color": "@@default_embed_color@@"
|
||||
},
|
||||
"inactive": {
|
||||
"header": {
|
||||
"title": "There are no songs playing right now"
|
||||
},
|
||||
"description": "[Support](@@server_invite_link@@) | [Invite](@@invite_link@@) | [Questionnaire](https://forms.gle/Qm8vjBfg2kp13YGD7)",
|
||||
"image": "https://i.imgur.com/dIFBwU7.png",
|
||||
"color": "@@default_embed_color@@"
|
||||
}
|
||||
},
|
||||
"default_buttons": [
|
||||
["back", "resume", "skip", {"stop": "red"}, "add"],
|
||||
["tracks"]
|
||||
]
|
||||
},
|
||||
"cooldowns": {
|
||||
"connect": [2, 30],
|
||||
"playlist view": [1, 30]
|
||||
|
||||
@@ -335,7 +335,7 @@ class InteractiveController(discord.ui.View):
|
||||
super().__init__(timeout=None)
|
||||
|
||||
self.player = player
|
||||
for row, btnRow in enumerate(func.settings.controller_settings):
|
||||
for row, btnRow in enumerate(func.settings.controller.get("default_buttons")):
|
||||
for btn in btnRow:
|
||||
color = ""
|
||||
if isinstance(btn, Dict):
|
||||
|
||||
@@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
"""
|
||||
|
||||
__version__ = "0.9"
|
||||
__version__ = "1.0"
|
||||
__author__ = 'Vocard Development, Choco'
|
||||
__license__ = "MIT"
|
||||
__copyright__ = "Copyright 2023 (c) Vocard Development, Choco"
|
||||
@@ -34,3 +34,4 @@ from .objects import *
|
||||
from .player import Player
|
||||
from .pool import *
|
||||
from .queue import *
|
||||
from placeholders import Placeholders
|
||||
|
||||
@@ -57,6 +57,7 @@ from .filters import Filter, Filters
|
||||
from .objects import Track
|
||||
from .pool import Node, NodePool
|
||||
from .queue import Queue, FairQueue
|
||||
from .placeholders import Placeholders
|
||||
from random import shuffle
|
||||
|
||||
class Player(VoiceProtocol):
|
||||
@@ -365,21 +366,50 @@ class Player(VoiceProtocol):
|
||||
self.updating = False
|
||||
|
||||
async def build_embed(self):
|
||||
track = self.current
|
||||
|
||||
if not track:
|
||||
embed=Embed(title=self.get_msg("noTrackPlaying"), description=f"[Vote](https://top.gg/bot/605618911471468554/vote/) | [Support]({func.settings.invite_link}) | [Invite](https://discord.com/oauth2/authorize?client_id=605618911471468554&permissions=2184260928&scope=bot%20applications.commands) | [Questionnaire](https://forms.gle/UqeeEv4GEdCq9hi3A)", color=func.settings.embed_color)
|
||||
embed.set_image(url='https://i.imgur.com/dIFBwU7.png')
|
||||
|
||||
if self.current:
|
||||
raw = func.settings.controller.get("embeds", {}).get("active")
|
||||
else:
|
||||
try:
|
||||
embed = Embed(color=func.settings.embed_color)
|
||||
embed.set_author(name=self.get_msg("playerAuthor").format(self.channel.name), icon_url=self.client.user.avatar.url)
|
||||
embed.description = self.get_msg("playerDesc").format(track.title, track.uri, (track.requester.mention if track.requester else "<@605618911471468554>"), (f"<@&{self.settings['dj']}>" if self.settings.get('dj') else f"{self.dj.mention}"))
|
||||
embed.set_image(url=track.thumbnail if track.thumbnail else "https://cdn.discordapp.com/attachments/674788144931012638/823086668445384704/eq-dribbble.gif")
|
||||
embed.set_footer(text=self.get_msg("playerFooter").format(self.queue.count, (self.get_msg("live") if track.is_stream else func.time(track.length)), self.volume, self.get_msg("playerFooter2").format(self.queue.repeat.capitalize()) if self.queue._repeat else ""))
|
||||
except:
|
||||
embed = Embed(description=self.get_msg("missingTrackInfo"), color=func.settings.embed_color)
|
||||
raw = func.settings.controller.get("embeds", {}).get("inactive")
|
||||
|
||||
if not raw:
|
||||
return
|
||||
|
||||
ph = Placeholders(self)
|
||||
try:
|
||||
embed = Embed()
|
||||
if author := raw.get("author"):
|
||||
embed.set_author(
|
||||
name = ph.replace(author.get("name")),
|
||||
url = ph.replace(author.get("url")),
|
||||
icon_url = ph.replace(author.get("icon_url"))
|
||||
)
|
||||
|
||||
if header := raw.get("header"):
|
||||
embed.title = ph.replace(header.get("title"))
|
||||
embed.url = ph.replace(header.get("url"))
|
||||
|
||||
if fields := raw.get("fields", []):
|
||||
for f in fields:
|
||||
embed.add_field(name=ph.replace(f.get("name")), value=ph.replace(f.get("value")))
|
||||
|
||||
if footer := raw.get("footer"):
|
||||
embed.set_footer(
|
||||
text = ph.replace(footer.get("text")),
|
||||
icon_url = ph.replace(footer.get("icon_url"))
|
||||
)
|
||||
|
||||
if thumbnail := raw.get("thumbnail"):
|
||||
embed.set_thumbnail(url = ph.replace(thumbnail))
|
||||
|
||||
if image := raw.get("image"):
|
||||
embed.set_image(url = ph.replace(image))
|
||||
|
||||
embed.description = ph.replace(raw.get("description"))
|
||||
embed.color = int(ph.replace(raw.get("color")))
|
||||
|
||||
except:
|
||||
embed = Embed(description=self.get_msg("missingTrackInfo"), color=func.settings.embed_color)
|
||||
|
||||
return embed
|
||||
|
||||
async def is_position_fresh(self):
|
||||
|
||||
Reference in New Issue
Block a user