Как правильно избежать использования разделителя в пользовательской строке?Python

Программы на Python
Ответить
Anonymous
 Как правильно избежать использования разделителя в пользовательской строке?

Сообщение Anonymous »

Сейчас я работаю над ботом Discord, который взаимодействует с моим игровым сервером через rcon, и столкнулся с проблемой.
У меня есть две функции. Это сделано для того, чтобы бот распознал команду (например, «.say Hello World»)

Код: Выделить всё

@bot.command(pass_context=True, aliases=[])
@asyncio.coroutine
def say(context, *, msg):
yield from bot.say("```{0}```".format(rcon.rcon_say(msg)))
Вторая функция отправляет его на мой игровой сервер. В данном случае «скажи Hello World», сервер скажет «Hello World» в чате.

Код: Выделить всё

def rcon_say(_msg : str):
with RCON(SERVER_ADDRESS, PASSWORD) as rcon:
return rcon("say {0}".format(_msg))
Проблема: .say "test; Kick user1" отправит на сервер две команды:

Код: Выделить всё

 say test
kick user1
поэтому его можно использовать с любой другой командой rcon. Итак, как избежать злоупотреблений?
Что я сделал, чтобы избежать злоупотреблений:
Я добавил следующую функцию:

Код: Выделить всё

def checkMsg(checkThis : str):
if ";" in checkThis:
raise errors.SemicolonError()
return
else:
return checkThis

И добавлено

Код: Выделить всё

 _msg = checkMsg(_msg)
Таким образом, это удалит все точки с запятой из вводимых пользователем данных, но мне почему-то кажется, что это неправильный способ сделать это. Можно ли по-прежнему отправлять точку с запятой (возможно, в декодированном виде/в Юникоде и т. д.)
Я в безопасности или есть способ злоупотребить ею?

Подробнее здесь: https://stackoverflow.com/questions/391 ... tom-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»