diff --git a/config.json b/config.json index af5dbcc..988fa56 100644 --- a/config.json +++ b/config.json @@ -4,5 +4,7 @@ "bot_token": "SET-BOT-TOKEN", "bot_prefix": "$", "bot_locale": "en", - "bot_activity": "How-Low-Hello - Keep on Burnin'" + "bot_activity": "How-Low-Hello - Keep on Burnin'", + "check_for_updates": true, + "auto_clear_trash": false } \ No newline at end of file diff --git a/functions.py b/functions.py index d96524d..b6a7fc5 100644 --- a/functions.py +++ b/functions.py @@ -1,4 +1,9 @@ -import json, os, sys, shutil, discord +import os +import sys +import json +import shutil +import discord + from datetime import datetime from pathlib import Path @@ -57,16 +62,6 @@ def loadJson(filename): output = {} return output -def getMsg(string): - global path - config = loadJson("config.json") - try: - locale = loadJson(f'{path}/locale/{config["bot_locale"]}.json') - return locale["messages"][string] - except Exception as exp: - appendLog(f"Could not get locale string named {string} due to exception {exp}") - return f"Could not get locale string {string}" - def guildConfGet(guild, variable): global path config = loadJson(f"{path}/guilds/{str(guild)}/config.json") @@ -97,6 +92,28 @@ def guildConfReset(guild, variable): os.mkdir(f"{path}/guilds/{str(guild)}/channels") saveJson(config, f"{path}/guilds/{str(guild)}/config.json") +def guildLocaleGet(guild): + global path + config = loadJson(f"{path}/config.json") + try: + locale = guildConfGet(guild.id, "locale") + except: + return config["bot_locale"] + if locale is None: + return config["bot_locale"] + else: + return locale + +def getMsg(string, guild): + global path + config = loadJson("config.json") + try: + locale = loadJson(f'{path}/locale/{guildLocaleGet(guild)}.json') + return locale["messages"][string] + except Exception as exp: + appendLog(f"Could not get locale string named {string} due to exception {exp}") + return f"Could not get locale string {string}" + def isUserVoice(vc): global path try: @@ -140,14 +157,14 @@ async def createUserVoice(vc, category, member): vc.guild.me: discord.PermissionOverwrite(read_messages=True, view_channel=True, manage_channels=True), member: discord.PermissionOverwrite(read_messages=True, view_channel=True, manage_channels=True) } - created_channel = await vc.guild.create_voice_channel(getMsg("name_voice").format(member.name), category=category, overwrites=overwrites_channel) + created_channel = await vc.guild.create_voice_channel(getMsg("name_voice", vc.guild).format(member.name), category=category, overwrites=overwrites_channel) appendLog(f"Created voice channel {str(created_channel.id)} for user {str(member.id)}", guild=vc.guild.id) if not os.path.isdir(f"{path}/guilds/{str(created_channel.guild.id)}/channels"): os.mkdir(f"{path}/guilds/{str(created_channel.guild.id)}/channels") vc_file = f"{path}/guilds/{str(created_channel.guild.id)}/channels/{str(created_channel.id)}.json" chan["ownerid"] = member.id saveJson(chan, vc_file) - nomic_channel = await vc.guild.create_text_channel(getMsg("name_nomic").format(created_channel.id), category=category, overwrites=overwrites_nomic, topic=getMsg("description_nomic").format(str(created_channel.id))) + nomic_channel = await vc.guild.create_text_channel(getMsg("name_nomic", vc.guild).format(created_channel.id), category=category, overwrites=overwrites_nomic, topic=getMsg("description_nomic", vc.guild).format(str(created_channel.id))) appendLog(f"Created nomic channel {str(nomic_channel.id)} for channel {str(created_channel.id)}", guild=vc.guild.id) chan["nomic"] = nomic_channel.id saveJson(chan, vc_file) @@ -171,7 +188,33 @@ async def changeNomicPerms(mode, vc, member): await nomic_channel.set_permissions(member, view_channel=False) else: await nomic_channel.set_permissions(member, view_channel=True) - + +async def clearTrash(client): + global path + if not os.path.isdir(f"{path}/guilds/"): + os.mkdir(f"{path}/guilds") + guilds_list = os.listdir(f"{path}/guilds/") + for guild in guilds_list: + guild_object = client.get_guild(int(guild)) + if os.path.isdir(f"{path}/guilds/{guild}/channels"): + channels_list = os.listdir(f"{path}/guilds/{guild}/channels/") + for channel in channels_list: + channel_id = channel[:-5] + try: + selected_channel = discord.utils.get(guild_object.voice_channels, id=int(channel_id)) + channel_owner = loadJson(f"{path}/guilds/{guild}/channels/{channel}")["ownerid"] + remove_channel = True + for member in selected_channel.members: + if member.id == channel_owner: + remove_channel = False + if remove_channel: + await removeUserVoice(selected_channel) + except: + os.remove(f"{path}/guilds/{guild}/channels/{channel_id}.json") + +#async def autoClearTrash(client): + # execute clearTrash every 120 seconds + async def guildConfigured(guild): output = {} @@ -182,21 +225,21 @@ async def guildConfigured(guild): try: if kind == "channel": guild_object = discord.utils.get(guild.channels, id=guildConfGet(guild.id, kind)) - output[kind] = getMsg("configured_"+kind).format(guild_object.name) + output[kind] = getMsg("configured_"+kind, guild).format(guild_object.name) elif kind == "category": guild_object = discord.utils.get(guild.categories, id=guildConfGet(guild.id, kind)) - output[kind] = getMsg("configured_"+kind).format(guild_object.name) + output[kind] = getMsg("configured_"+kind, guild).format(guild_object.name) elif kind == "prefix": - output[kind] = getMsg("configured_"+kind).format(guildConfGet(guild.id, kind)) + output[kind] = getMsg("info_prefix", guild).format(guildConfGet(guild.id, kind)) except Exception as exp: if kind == "prefix": - output[kind] = getMsg("unconfigured_"+kind).format(config["bot_prefix"]) + output[kind] = getMsg("info_prefix", guild).format(config["bot_prefix"]) else: - output[kind] = getMsg("unconfigured_"+kind) + output[kind] = getMsg("unconfigured_"+kind, guild) else: if kind == "prefix": - output[kind] = getMsg("unconfigured_"+kind).format(config["bot_prefix"]) + output[kind] = getMsg("info_prefix", guild).format(config["bot_prefix"]) else: - output[kind] = getMsg("unconfigured_"+kind) + output[kind] = getMsg("unconfigured_"+kind, guild) - return getMsg("server_config").format(output["prefix"], output["channel"], output["category"]) + return getMsg("server_config", guild).format(output["prefix"], getMsg("info_locale", guild).format(getMsg("locale_name", guild)), output["channel"], output["category"]) diff --git a/locale/en.json b/locale/en.json index d2fe56f..e6c239f 100644 --- a/locale/en.json +++ b/locale/en.json @@ -1,7 +1,8 @@ { "messages": { "shutdown": "Shutting down...", - "locale_set": "Bot's locale has been changed to **English**", + "locale_name": "English", + "locale_set": "Bot's locale has been changed to `English`", "help": "**List of command:**\n{0}• Set parent channel: `{1}channel CHANNEL-ID`\n• Set parent category: `{2}category CATEGORY-ID`\n• Set commands prefix: `{3}prefix SYMBOL`\n\nTo reset channel/category/prefix use `reset` as argument\n\nPlease note that channel/category name ≠ ID of channel/category", "help_owner": "• Turn off the bot: `{0}shutdown`\n", "command_in_dm": "Commands can only be executed on the server", @@ -9,6 +10,7 @@ "usage_channel": "Correct usage: `{0}channel CHANNEL-ID`\nPlease note that name of channel ≠ ID of channel.\nFind out more about this here: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_category": "Correct usage: `{0}category CATEGORY-ID`\nPlease note that name of category ≠ ID of category.\nFind out more about it here: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_prefix": "Correct usage: `{0}prefix SYMBOL`", + "usage_locale": "Correct usage: `{0}locale LOCALE`\nAvailable locales: {1}", "result_channel": "Voice channel **{0}** is now set as parent", "result_category": "Category **{0}** is now set as parent", "result_prefix": "Command prefix **{0}** is now set as primary for this server", @@ -17,16 +19,18 @@ "reset_channel": "Parent voice channel has been reset", "reset_category": "Parent category has been reset", "reset_prefix": "Commands prefix has been reset and now is `{0}`", + "reset_locale": "Bot's locale on this server has been reset and now is `{0}`", "none_channel": "Parent voice channel is not set", "none_category": "Parent category is not set", "none_prefix": "Commands prefix is not set, using default prefix `{0}`", - "server_config": "**Server status:**\n{0}\n{1}\n{2}\n\n", - "unconfigured_prefix": "ℹ Commands prefix: `{0}`", + "none_locale": "Bot's locale on this server is not set, using default locale: `{0}`", + "server_config": "**Server status:**\n{0}\n{1}\n{2}\n{3}\n\n", + "info_prefix": "ℹ Commands prefix: `{0}`", + "info_locale": "ℹ Bot's server language: `{0}`", "unconfigured_channel": "⚠ Parent channel", "unconfigured_category": "⚠ Parent category", - "configured_prefix": "ℹ Commands prefix: `{0}`", - "configured_channel": "☑ Parent channel: **{0}**", - "configured_category": "☑ Parent category: **{0}**", + "configured_channel": "☑ Parent channel: `{0}`", + "configured_category": "☑ Parent category: `{0}`", "name_voice": "{0}'s channel", "name_nomic": "no-mic-{0}", "description_nomic": "Text channel for no mic communication\nVoice room ID: {0}" diff --git a/locale/ru.json b/locale/ru.json index 9561861..4c1d920 100644 --- a/locale/ru.json +++ b/locale/ru.json @@ -1,7 +1,8 @@ { "messages": { "shutdown": "Выключаюсь...", - "locale_set": "Язык бота был изменён на **Русский**", + "locale_name": "Русский", + "locale_set": "Язык бота на сервере был изменён на `Русский`", "help": "**Список команд:**\n{0}• Установить родительский канал: `{1}channel ID-КАНАЛА`\n• Установить родительскую категорию: `{2}category ID-КАТЕГОРИИ`\n• Установить префикс команд: `{3}prefix СИМВОЛ`\n\nДля сброса канала/категории/префикса используйте `reset` как аргумент\n\nОбратите внимание, что имя канала/категории ≠ ID канала/категории", "help_owner": "• Выключиться: `{0}shutdown`\n", "command_in_dm": "Команды можно исполнять только находясь на сервере", @@ -9,24 +10,27 @@ "usage_channel": "Правильное использование: `{0}channel ID-КАНАЛА`\nОбратите внимание, что имя канала ≠ ID канала.\nУзнайте больше об этом тут: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_category": "Правильное использование: `{0}category ID-КАТЕГОРИИ`\nОбратите внимание, что имя категории ≠ ID категории.\nУзнайте больше об этом тут: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_prefix": "Правильное использование: `{0}prefix СИМВОЛ`", - "result_channel": "Голосовой канал **{0}** был установлен как родительский", - "result_category": "Категория **{0}** была установлена как родительская", - "result_prefix": "Префикс **{0}** был установлен как основной для этого сервера", + "usage_locale": "Правильное использование: `{0}locale ЯЗЫК`\nДоступные языки: {1}", + "result_channel": "Голосовой канал `{0}` был установлен как родительский", + "result_category": "Категория `{0}` была установлена как родительская", + "result_prefix": "Префикс `{0}` был установлен как основной для этого сервера", "warn_channel": "⚠ Родительский канал не установлен!\nДля работы бота нужно установить канал: `{0}channel ID-КАНАЛА`", "warn_category": "⚠ Родительская категория не установлена!\nДля работы бота нужно установить категорию: `{0}category ID-КАТЕГОРИИ`", "reset_channel": "Родительский голосовой канал был сброшен", "reset_category": "Родительская категория была сброшена", "reset_prefix": "Прификс команд был сброшен, теперь это `{0}`", + "reset_locale": "Язык бота на этом сервере был сброшен, теперь это `{0}`", "none_channel": "Родительский голосовой канал не был задан", "none_category": "Родительская категория не была задана", "none_prefix": "Префикс команд не был задан, используется стандартный `{0}`", - "server_config": "**Статус сервера:**\n{0}\n{1}\n{2}\n\n", - "unconfigured_prefix": "ℹ Префикс команд: `{0}`", + "none_locale": "Язык бота на сервере не был задан, используется стандартный: `{0}`", + "server_config": "**Статус сервера:**\n{0}\n{1}\n{2}\n{3}\n\n", + "info_prefix": "ℹ Префикс команд: `{0}`", + "info_locale": "ℹ Язык бота на сервере: `{0}`", "unconfigured_channel": "⚠ Родительский канал", "unconfigured_category": "⚠ Родительская категория", - "configured_prefix": "ℹ Префикс команд: `{0}`", - "configured_channel": "☑ Родительский канал: **{0}**", - "configured_category": "☑ Родительская категория: **{0}**", + "configured_channel": "☑ Родительский канал: `{0}`", + "configured_category": "☑ Родительская категория: `{0}`", "name_voice": "Канал {0}", "name_nomic": "без-микро-{0}", "description_nomic": "Текстовый канал для коммуникации без микрофона\nID голосовой комнаты: {0}" diff --git a/locale/uk.json b/locale/uk.json index 0544dff..5b4614f 100644 --- a/locale/uk.json +++ b/locale/uk.json @@ -1,7 +1,8 @@ { "messages": { "shutdown": "Вимикаюсь...", - "locale_set": "Мова бота була змінена на **Українську**", + "locale_name": "Українська", + "locale_set": "Мова бота на сервері була змінена на `Українську`", "help": "**Перелік команд:**\n{0}• Встановити твірний канал: `{1}channel ID-КАНАЛА`\n• Встановити твірну категорію: `{2}category ID-КАТЕГОРІЇ`\n• Встановити префікс команд: `{3}prefix СИМВОЛ`\n\nДля скидання каналу/категорії/префіксу використовуйте `reset` як аргумент\n\nЗверніть увагу, що назва каналу/категорії ≠ ID каналу/категорії", "help_owner": "• Вимкнутись: `{0}shutdown`\n", "command_in_dm": "Команди можна виконувати тільки знаходячись на сервері", @@ -9,6 +10,7 @@ "usage_channel": "Правильне використання: `{0}channel ID-КАНАЛА`\nЗверніть увагу, що назва канала ≠ ID канала.\nДізнайтеся більше про це тут: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_category": "Правильне використання: `{0}category ID-КАТЕГОРІЇ`\nЗверніть увагу, що назва категорії ≠ ID категорії.\nДізнайтеся більше про це тут: https://support.discord.com/hc/articles/206346498-Where-can-I-find-my-User-Server-Message-ID", "usage_prefix": "Правильне використання: `{0}prefix СИМВОЛ`", + "usage_locale": "Правильне використання: `{0}locale МОВА`\nДоступні мови: {1}", "result_channel": "Голосовий канал **{0}** було встановлено як твірний", "result_category": "Категорія **{0}** була встановлена як твірна", "result_prefix": "Префікс **{0}** було встановлено як основний для цього сервера", @@ -17,16 +19,18 @@ "reset_channel": "Твірний голосовий канал було скинуто", "reset_category": "Твірну категорію було скинуто", "reset_prefix": "Префікс команд було скинуто, тепер це `{0}`", + "reset_locale": "Мову бота на цьому сервері було скинуто, тепер це `{0}`", "none_channel": "Твірний голосовий канал не було задано", "none_category": "Твірну категорію не було задано", "none_prefix": "Префікс команд не було задано, використовується стандартний `{0}`", - "server_config": "**Статус сервера:**\n{0}\n{1}\n{2}\n\n", - "unconfigured_prefix": "ℹ Префікс команд: `{0}`", + "none_locale": "Мова бота на сервері не була задана, використовується стандартна: `{0}`", + "server_config": "**Статус сервера:**\n{0}\n{1}\n{2}\n{3}\n\n", + "info_prefix": "ℹ Префікс команд: `{0}`", + "info_locale": "ℹ Мова бота на сервері: `{0}`", "unconfigured_channel": "⚠ Твірний канал", "unconfigured_category": "⚠ Твірна категорія", - "configured_prefix": "ℹ Префікс команд: `{0}`", - "configured_channel": "☑ Твірний канал: **{0}**", - "configured_category": "☑ Твірна категорія: **{0}**", + "configured_channel": "☑ Твірний канал: `{0}`", + "configured_category": "☑ Твірна категорія: `{0}`", "name_voice": "Канал {0}", "name_nomic": "без-мікро-{0}", "description_nomic": "Текстовий канал для комунікації без мікрофона\nID голосової кімнати: {0}" diff --git a/yusarin.py b/yusarin.py index ba89e70..f8c0f77 100644 --- a/yusarin.py +++ b/yusarin.py @@ -1,4 +1,8 @@ -import json, os, sys +import os +import sys +import json +import requests +import threading try: import discord @@ -7,60 +11,31 @@ except Exception as exp: sys.exit() from functions import * -#from discord_slash import SlashCommand, SlashContext - pid = os.getpid() +version = 1.1 + +if loadJson("config.json")["check_for_updates"]: + try: + serv_ver = requests.get("https://www.end-play.xyz/yusarin/version.txt").text.replace('\n', '') + if float(serv_ver) > version: + appendLog(f"YusarinBot version {serv_ver} is available. Download new version here: https://github.com/profitrollgame/YusarinBot/releases/latest") + appendLog(f"Currently using YusarinBot v{str(version)}") + except Exception as exp: + appendLog(f"Could not get YusarinBot cloud version due to {exp}. Currently using {str(version)}") intents = discord.Intents().all() client = discord.Client(intents=intents) -#slash = SlashCommand(client) @client.event async def on_ready(): - print('Logged in as {0.user}'.format(client)) + appendLog(f"Logged in as {client.user}") config = loadJson("config.json") await client.change_presence(activity=discord.Activity(type=discord.ActivityType.listening, name=config["bot_activity"])) - global path - - if not os.path.isdir(f"{path}/guilds/"): - os.mkdir(f"{path}/guilds") - - guilds_list = os.listdir(f"{path}/guilds/") - - for guild in guilds_list: - - guild_object = client.get_guild(int(guild)) - - if os.path.isdir(f"{path}/guilds/{guild}/channels"): - - channels_list = os.listdir(f"{path}/guilds/{guild}/channels/") - - for channel in channels_list: - - channel_id = channel[:-5] - - try: - - selected_channel = discord.utils.get(guild_object.voice_channels, id=int(channel_id)) - - channel_owner = loadJson(f"{path}/guilds/{guild}/channels/{channel}")["ownerid"] - - remove_channel = True - - for member in selected_channel.members: - if member.id == channel_owner: - remove_channel = False - - if remove_channel: - await removeUserVoice(selected_channel) - - except: - - os.remove(f"{path}/guilds/{guild}/channels/{channel_id}.json") + await clearTrash(client) @client.event @@ -125,7 +100,7 @@ async def on_message(message): if message.author.id == config["owner"]: - await message.channel.send(getMsg("shutdown")) + await message.channel.send(getMsg("shutdown", message.guild)) os.system(f"kill -9 {str(pid)}") else: @@ -148,11 +123,11 @@ async def on_message(message): guildConfReset(message.guild.id, "channel") - await message.channel.send(getMsg("reset_channel")) + await message.channel.send(getMsg("reset_channel", message.guild)) else: - await message.channel.send(getMsg("none_channel")) + await message.channel.send(getMsg("none_channel", message.guild)) else: @@ -160,24 +135,24 @@ async def on_message(message): guildConfSet(message.guild.id, "channel", int(fullcmd[1])) - await message.channel.send(getMsg("result_channel").format(selected_channel.name)) + await message.channel.send(getMsg("result_channel", message.guild).format(selected_channel.name)) if guildConfGet(message.guild.id, "category") is None: - await message.channel.send(getMsg("warn_category").format(prefix)) + await message.channel.send(getMsg("warn_category", message.guild).format(prefix)) except Exception as exp: #print(exp) - await message.channel.send(getMsg("usage_channel").format(prefix)) + await message.channel.send(getMsg("usage_channel", message.guild).format(prefix)) else: - await message.channel.send(getMsg("command_forbidden")) + await message.channel.send(getMsg("command_forbidden", message.guild)) else: - await message.channel.send(getMsg("command_in_dm")) + await message.channel.send(getMsg("command_in_dm", message.guild)) elif message.content.startswith(f"{prefix}category"): @@ -195,11 +170,11 @@ async def on_message(message): guildConfReset(message.guild.id, "category") - await message.channel.send(getMsg("reset_category")) + await message.channel.send(getMsg("reset_category", message.guild)) else: - await message.channel.send(getMsg("none_category")) + await message.channel.send(getMsg("none_category", message.guild)) else: @@ -207,24 +182,24 @@ async def on_message(message): guildConfSet(message.guild.id, "category", int(fullcmd[1])) - await message.channel.send(getMsg("result_category").format(selected_category.name)) + await message.channel.send(getMsg("result_category", message.guild).format(selected_category.name)) if guildConfGet(message.guild.id, "channel") is None: - await message.channel.send(getMsg("warn_channel").format(prefix)) + await message.channel.send(getMsg("warn_channel", message.guild).format(prefix)) except Exception as exp: #print(exp) - await message.channel.send(getMsg("usage_category").format(prefix)) + await message.channel.send(getMsg("usage_category", message.guild).format(prefix)) else: - await message.channel.send(getMsg("command_forbidden")) + await message.channel.send(getMsg("command_forbidden", message.guild)) else: - await message.channel.send(getMsg("command_in_dm")) + await message.channel.send(getMsg("command_in_dm", message.guild)) elif message.content.startswith(f"{prefix}prefix"): @@ -242,38 +217,96 @@ async def on_message(message): guildConfReset(message.guild.id, "prefix") - await message.channel.send(getMsg("reset_prefix").format(config["bot_prefix"])) + await message.channel.send(getMsg("reset_prefix", message.guild).format(config["bot_prefix"])) else: - await message.channel.send(getMsg("none_prefix").format(prefix)) + await message.channel.send(getMsg("none_prefix", message.guild).format(prefix)) else: guildConfSet(message.guild.id, "prefix", fullcmd[1]) - await message.channel.send(getMsg("result_prefix").format(fullcmd[1])) + await message.channel.send(getMsg("result_prefix", message.guild).format(fullcmd[1])) except: - await message.channel.send(getMsg("usage_prefix").format(prefix)) + await message.channel.send(getMsg("usage_prefix", message.guild).format(prefix)) else: - await message.channel.send(getMsg("command_forbidden")) + await message.channel.send(getMsg("command_forbidden", message.guild)) else: - await message.channel.send(getMsg("command_in_dm")) + await message.channel.send(getMsg("command_in_dm", message.guild)) + + elif message.content.startswith(f"{prefix}locale"): + + fullcmd = message.content.split() + + if message.guild is not None: + + if message.author.guild_permissions.administrator: + + try: + + if fullcmd[1] == "reset": + + if guildConfGet(message.guild.id, "locale") is not None: + + guildConfReset(message.guild.id, "locale") + appendLog(f"Server's locale has been reset", message.guild.id) + await message.channel.send(getMsg("reset_locale", message.guild).format(getMsg("locale_name", message.guild))) + + else: + + await message.channel.send(getMsg("none_locale", message.guild).format(getMsg("locale_name", message.guild))) + + else: + + for locale_file in os.listdir(f"{path}/locale/"): + if locale_file[:-5] == fullcmd[1]: + guildConfSet(message.guild.id, "locale", fullcmd[1]) + appendLog(f"Server's locale is now set to {fullcmd[1]}", message.guild.id) + await message.channel.send(getMsg("locale_set", message.guild)) + return + + locales = [] + + for locale_file in os.listdir(f"{path}/locale/"): + locales.append(f"`{locale_file[:-5]}`") + + await message.channel.send(getMsg("usage_locale", message.guild).format(prefix, ", ".join(locales))) + + except: + + locales = [] + + for locale_file in os.listdir(f"{path}/locale/"): + locales.append(f"`{locale_file[:-5]}`") + + await message.channel.send(getMsg("usage_locale", message.guild).format(prefix, ", ".join(locales))) + + else: + await message.channel.send(getMsg("command_forbidden", message.guild)) + + else: + await message.channel.send(getMsg("command_in_dm", message.guild)) elif message.content.startswith(f"{prefix}help"): if message.author.id == config["owner"]: if message.guild is not None: - await message.channel.send(await guildConfigured(message.guild) + getMsg("help").format(getMsg("help_owner").format(prefix), prefix, prefix, prefix, prefix)) + await message.channel.send(await guildConfigured(message.guild) + getMsg("help", message.guild).format(getMsg("help_owner", message.guild).format(prefix), prefix, prefix, prefix, prefix)) else: - await message.channel.send(getMsg("help").format(getMsg("help_owner").format(prefix), prefix, prefix, prefix, prefix)) + await message.channel.send(getMsg("help", message.guild).format(getMsg("help_owner", message.guild).format(prefix), prefix, prefix, prefix, prefix)) else: if message.guild is not None: await message.channel.send(await guildConfigured(message.guild) + getMsg("help").format("", prefix, prefix, prefix)) else: - await message.channel.send(getMsg("help").format("", prefix, prefix, prefix)) + await message.channel.send(getMsg("help", message.guild).format("", prefix, prefix, prefix)) + +#if loadJson("config.json")["auto_clear_trash"]: + # run func + +appendLog(f"Trying to log in...") client.run(loadJson("config.json")["bot_token"]) \ No newline at end of file