Когда вы запускаете
target, amount = message.content.split(' ')[1:]
и возникнет ошибка, он не будет создавать переменные target
, amount
, но после обнаружения этой ошибки вы запускаете target[2:-1]
, а затем он пытается получить значение из несуществующей переменной
Вы можете поместить все внутри try /, кроме
if message.content.startswith('bott share'):
try:
target, amount = message.content.split(' ')[1:]
amount = int(amount)
target = target[2:-1]
if target[0] == '!':
target = target[1:]
target = int(target)
if amount > getcoins(user):
await message.channel.send('ARE YOU TRYING TO HJACK THE SYSTEM?')
elif amount < 0:
await message.channel.send('ARE YOU TRYING TO HJACK THE SYSTEM?')
setcoins(user, getcoins(user)-amount)
setcoins(target, getcoins(target)+amount)
await message.channel.send(f'You gave {target} {amount}, and now you have {getcoins(user)}.')
except ValueError:
await message.channel.send('Invalid Arguments')
, или вы можете установить какое-то значение по умолчанию перед try/except
или внутри except
target = None
amount = None
try:
target, amount = message.content.split(' ')[1:]
amount = int(amount)
except ValueError:
await message.channel.send('Invalid Arguments')
if target is not None and amount is not None:
target = target[2:-1]
# ... rest ...
или в конечном итоге - но если target
- пустая строка или amount
- 0
, то if
даст False
if target and amount:
target = target[2:-1]
# ... rest ...
Если вы запустите этот код в функции, вы можете использовать return
до финиша sh функция
try:
target, amount = message.content.split(' ')[1:]
amount = int(amount)
except ValueError:
await message.channel.send('Invalid Arguments')
return # finish function