#python #discord #discord.py #discord.py-rewrite
#python #Discord #discord.py
Вопрос:
Я хочу создать генератор учетных записей discord, используя python и json, я могу сделать его генератором, но я не могу заставить его удалить учетную запись после генерации, пожалуйста, помогите.
Код:
@client.command()
async def gentest(ctx):
genembed = discord.Embed(
title="Minecraft NFA",
colour=discord.Color.green()
)
with open('alts.json', 'r') as f:
alts = json.load(f)
genembed.add_field(name="Account:", value=random.choice(alts), inline=False)
with open('alts.json', 'w') as f:
alts = alts.pop(alts)
await ctx.author.send(embed=genembed)
await ctx.send(f"{ctx.author.mention} Please check your DMs!")
но когда я попытался создать (с помощью alts.pop), он отправляет эту ошибку:
Команда вызвала исключение: TypeError: объект ‘list’ не может быть интерпретирован как целое число
Ответ №1:
Alts — это просто список alts, это не индекс списка (целое число) для этого вам нужно будет сделать что-то вроде:
@client.command()
async def gentest(ctx):
genembed = discord.Embed(
title="Minecraft NFA",
colour=discord.Color.green()
)
with open('alts.json', 'r') as f:
alts = json.load(f)
choice = random.choice(alts)
genembed.add_field(name="Account:", value=choice, inline=False)
with open('alts.json', 'w') as f:
del alts[alts.index(choice)]
f.write(json.dumps(alts, indent=4))
await ctx.author.send(embed=genembed)
await ctx.send(f"{ctx.author.mention} Please check your DMs!")
Комментарии:
1. я попробовал ваш код, и после его генерации он удаляет весь список.
2. Этого не должно быть, вы извлекаете один индекс из того же файла json. Вы уверены, что у вас было больше в файле до тестирования?
3. Ах, я вижу, я не слишком часто использую файлы json, поэтому я допустил ошибку, не используя f, пожалуйста, попробуйте сейчас и дайте мне знать, как это происходит!
4. о, и я использую [] перед alts на . файл json
5. и он получил эту ошибку Команда вызвала исключение: AttributeError: объект ‘_io.TextIOWrapper’ не имеет атрибута ‘pop’
Ответ №2:
Вы можете добавить в файл JSON. Я сделал так, чтобы идентификатор пользователя, ключ и значение были числом 0. Вы можете легко отредактировать это.
Возможно, это не то, что вы хотели, но, на мой взгляд, так лучше. Который создает учетную запись для пользователя вместо использования заданного количества учетных записей.
@bot.command()
async def gentest(ctx):
genembed = discord.Embed(
title="Minecraft NFA",
colour=discord.Color.green()
)
with open('accounts.json', 'r') as f:
accounts = json.load(f)
genembed.add_field(
name="Account:", value='Created Successfully', inline=False)
accounts[ctx.author.id] = 0 # key is the id of the user and value is zero
with open('accounts.json', 'w') as f:
json.dump(accounts, f)
await ctx.author.send(embed=genembed)
await ctx.send(f"{ctx.author.mention} Please check your DMs!")