Вопрос Бот на питоне.

Регистрация
24 Ноя 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Я разрабатываю бот-игру на питоне для площадки Discord и у меня возникла проблема, которую я не могу решить уже 2 день и я хотел спросить у тех кто знает как это все устроено чтобы мне помогли.

В общем кратко о проблеме, изначально нужно чтобы у пользователя баланс был 0( то есть bal = 0) после нужна команда клик(click) которая и будет давать по 1 монете за её ввод. и вот получается код:



bal = 0





@bot.slash_command(description='Работать')

async def сlick(ctx):

await ctx.send('Вы заработали 1 монету')

bal + 1



но вот в чем проблема, бот не засчитывает последнюю строку (bal + 1) и как я только уже не писал, и слитно и пытался делать списки и пытался писать bal += 1 но нечего не помогало, при выводе баланса игрока все равно составлял 0, бота не перезапускал нечего не делал чтобы баланс мог сбросится. я подозреваю что сама строка bal + 1 просто не может выполнятся из за особенности disnake (на котором и пишется бот) и нужно эту строку писать как то по другому, но как я не знаю. и именно по этому я тут. Жду любую помощь.
 
выгони бота, он змею раздавит
 
bal = 0

@bot.slash_command(description='Работать')
async def click(ctx):
global bal
bal += 1
await ctx.send('Вы заработали 1 монету. Ваш баланс теперь составляет ' + str(bal))
 
Проблема заключается в том, что в коде не происходит изменение переменной bal. Вместо этого, в последней строке кода написано bal + 1, что не приводит к изменению значения переменной. Для того, чтобы изменить значение переменной, нужно использовать оператор присваивания, например, bal = bal + 1 или bal += 1.
Исправленный код будет выглядеть так: bal = 0

@bot.slash_command(description='Работать')
async def click(ctx):
global bal
await ctx.send('Вы заработали 1 монету')
bal += 1 Здесь добавлен оператор присваивания bal += 1, который увеличивает значение переменной bal на 1. Также мы добавили строку global bal, чтобы указать, что переменная bal является глобальной и может быть изменена внутри функции.

Имей ввиду это только часть кода а не вся программа
 
Ну так тебе нужно чтобы:
1)функция этот баланс сначала принимала из базы данных для конкретного пользователя(не общий же они счет растят)
2)возвращала новое значение в базу
Таким образом совершенно не ясно, зачем ты пытаешься растить локальную переменную.
 
Назад
Сверху