【发布时间】:2021-05-24 05:13:59
【问题描述】:
这是供不和谐机器人存储用户游戏数据的。只要机器人永远不会关闭,它就可以工作,但如果我关闭它,它会重新初始化数据库。我尝试注释掉初始用户插入,类似于注释掉创建数据库本身的方式,但这会导致第 57 行中对“行”的引用无法正常工作。
import discord
import os
import sqlite3
conn = sqlite3.connect('test.db')
print("Opened database successfully")
#CREATED DATABASE
#conn.execute('''CREATE TABLE MEMBERS
# (ID INT NOT NULL,
# NAME TEXT NOT NULL,
# LEVEL INT NOT NULL,
# CP INT,
# CLASS CHAR(25))''')
#print ("Table created successfully")
#INSERT USER
conn.execute("INSERT INTO MEMBERS (ID,NAME,LEVEL,CP,CLASS) \
VALUES (229039794787713025, 'Solumn', 125, 5525391, 'Mage')");
conn.execute("INSERT INTO MEMBERS (ID,NAME,LEVEL,CP,CLASS) \
VALUES (624678639778267136, 'SacredPugsly', 0, 0, 'None')");
conn.execute("INSERT INTO MEMBERS (ID,NAME,LEVEL,CP,CLASS) \
VALUES (159985870458322944, 'Noxis', 124, 10, 'Huntard')");
bot = discord.Client()
@bot.event
async def on_ready():
guild_count = 0
for guild in bot.guilds:
print(f"- {guild.id} (name: {guild.name})")
guild_count = guild_count + 1
print("AlienBot is in " + str(guild_count) + " servers.")
def check(message):
try:
int(message.content)
return True
except ValueError:
return False
@bot.event
async def on_message(message):
#debug to check user ID'set
print(message.author.id)
if message.content.startswith('!show'):
#SELECT USER
cursor = conn.execute("SELECT * from MEMBERS WHERE id=?", (message.author.id,))
for row in cursor:
print ("ID = ", row[0])
response = discord.Embed(title=row[1],color=0x3498db)
response.add_field(name="Level", value=row[2], inline=False)
response.add_field(name="CP", value=row[3], inline=False)
response.add_field(name="Class", value=row[4], inline=False)
await message.channel.send(embed=response)
if message.content.startswith('!updatecp'):
await message.channel.send("Enter your CP")
cp = await bot.wait_for('message',timeout = 60, check=check)
attempt = int(cp.content)
cursor = conn.execute("UPDATE MEMBERS SET cp=? WHERE id=?", (int(attempt),message.author.id))
if message.content.startswith('!updatelevel'):
await message.channel.send("Enter your Level")
lvl = await bot.wait_for('message',timeout = 60, check=check)
attempt = int(lvl.content)
cursor = conn.execute("UPDATE MEMBERS SET LEVEL=? WHERE id=?", (attempt, message.author.id))
if message.content.startswith('!help'):
response = discord.Embed(title='Bot Commands',color=0x3498db)
response.add_field(name="!updatecp", value='Allows you to adjust your CP', inline=False)
response.add_field(name="!updatelevel", value='Allows you to adjust your level', inline=False)
response.add_field(name="!show", value='Shows you your character data', inline=False)
await message.channel.send(embed=response)
#conn.close()
from dotenv import load_dotenv
load_dotenv()
bot.run(os.getenv("DISCORD_TOKEN"))```
【问题讨论】: