Невозможно получить данные из JSON с условиями
В настоящее время я почти новичок в программировании и создаю многоязычного бота Discord, написанного на Discord.py Rewrite, который будет получать свои строки из определенного JSON в соответствии с языком сервера.
Вот мой код в начале моей тестовой команды:
async def _bottranslate(self, server, str_name):
# We are looking for our guild's language
for guild in self.bot.guilds:
server = guild
# Ask to MongoDB which language they use
language = self.settings.getServerConfig(server, "Language")
langfile = ''
# In case - something went wrong with server config
#if language is None:
# langfile = "en_US.json"
# Removed - it always returns English Strings
# In case it's English
if language == "English":
langfile = "en_US.json"
# In case it's Turkish
if language == "Turkish":
langfile = "tr_TR.json"
# Check path if our json exists
if os.path.exists(langfile):
f = open(langfile,'r')
filedata = f.read()
f.close()
selflanguage = json.loads(filedata)
for lang in selflanguage:
botstring = '{}'.format(lang[str_name])
else: # Warn your bot admin
selflanguage = []
print("WARNING! - Corrupted/Deleted translation {} detected, please take a look on it".format(langfile))
# End of Translation stuff
Вот моя команда для моего первого теста:
@commands.command(pass_context=True)
async def worddefine(self, ctx, *, word : str = None):
"""Search a definition from UrbanDictionnary."""
if not word:
msg = await self._bottr(ctx.guild, str_name="no_word")
await ctx.channel.send(msg)
return
Бот получает "Нет" в качестве ответа и не может отправить сообщение, получил "Невозможно отправить пустое сообщение". Вот полный трекбек:
Ignoring exception in command worddefine:
Traceback (most recent call last):
File "AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 62, in wrapped
ret = await coro(*args, **kwargs)
File "Cogs\UrbanDict.py", line 74, in worddefine
await ctx.channel.send(msg)
File "AppData\Local\Programs\Python\Python36\lib\site-packages\discord\abc.py", line 772, in send
data = await state.http.send_message(channel.id, content, tts=tts, embed=embed, nonce=nonce)
File "AppData\Local\Programs\Python\Python36\lib\site-packages\discord\http.py", line 214, in request
raise HTTPException(r, data)
discord.errors.HTTPException: BAD REQUEST (status code: 400): Cannot send an empty message
Мои JSON правильно отформатированы, эта ошибка исчезает, когда я удаляю закомментированные строки на _bottranslate
, он всегда возвращает английские строки, и это не то, что я хочу.
Я предполагаю, что бот не может получить языковую переменную из MongoDB, но я не понимаю, почему, он правильно получает его потребности от Mongo для других команд.
Спасибо за помощь!