#python #discord.py
#python #discord.py
Вопрос:
Я хочу добавить систему экономии к моему боту discord, написанному на python. Я следовал этому руководству на YouTube и внедрил его в свой код. Вот как это выглядит:
from discord.ext import commands
import json
import os
class Eco(commands.Cog):
def __init__(self, client):
self.client = client
#function to get bank data
async def getbankdata(self):
with open("bank.json", "r") as f:
users = json.load(f)
return users
#function to open a new account for a user if they don't have one
async def open_account(self, user):
users = await self.client.getbankdata(self)
if str(user.id) in users:
return False
else:
users[str(user.id)] = {}
users[str(user.id)]["wallet"] = 0
users[str(user.id)]["bank"] = 0
with open("bank.json", "w") as f:
json.dump(users, f)
return True
#check balance command
@commands.command()
async def bal(self, ctx):
user = ctx.author
await self.open_account(user)
users = await self.getbankdata()
walletamt = users[str(user.id)]["wallet"]
bankamt = users[str(user.id)]["bank"]
await ctx.send(f'Wallet: {walletamt}, Bank: {bankamt}')
def setup(client):
client.add_cog(Eco(client))
В учебном пособии весь код был написан в main.py файл, где здесь я записал весь код в файл cog, поэтому мне пришлось немного подправить функции. Когда я пытаюсь запустить bal
команду, я получаю сообщение об ошибке 'Bot' object has no attribute 'getbankdata'
. Кажется, я не могу найти источник ошибки. Кто-нибудь может мне помочь? Я также был бы признателен за любые другие исправления в моем коде, которые могут вызвать ошибку.
Ответ №1:
Ошибка в open_account
методе. Это не self.client.getbankdata
так, это self.getbankdata
async def open_account(self, user):
users = self.getbankdata()
# ...
Комментарии:
1. я исправил код, и теперь он работает… когда я пробовал это раньше, он сказал, что getbankdata не определено. Спасибо.
2. Не беспокойтесь, не забудьте принять ответ, если это помогло
3. Это не определено, так как ваша команда баланса находится после функции открытия счета, попробуйте указать ее в getbankdata и open_account