黑名单 SQL 数据库。不工作 Discord.py
Blacklist SQL Database. Not working Discord.py
db = sqlite3.connect("BlacklistedUsers.db")
c = db.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS "BlacklistedUser_IDs" (
"User_IDs" INTEGER,
"Reason" TEXT,
PRIMARY KEY("User_IDs")
);''')
def owner_ID(ctx):
return ctx.author.id == 738332946934661132
def not_allowed(ctx):
member = ctx.discord.member.id
c.execute("SELECT `User_IDs` FROM `BlacklistedUser_IDs` WHERE `User_IDs`=%s", (member))
UserID = cursor.fetchall()
if ctx.author.id not in UserID:
print(UserID)
return True
else:
return False
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CheckFailure):
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="BlackListed!")
embed.add_field(name="Sorry", value=f"{ctx.author} It looks like you've been Blacklisted! for {Reason}", inline=False)
embed.add_field(name="If you would like to Appeal Or think this might have been a mistake Message", value="@L Y N X", inline=False)
await ctx.send(embed=embed)
@bot.command()
@commands.check(owner_ID)
async def blacklist(ctx, member: discord.Member, *, reason=None):
c.execute("INSERT INTO `BlacklistedUser_IDs`(User_IDs, Reason) VALUES(%s, %s)", (member.id, reason))
db.commit()
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="Blacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Blacklisted from Using commands!")
embed.add_field(name="Reason : ", value=f"{reason}")
await ctx.send(embed=embed)
@bot.command()
@commands.check(owner_ID)
async def unblacklist(ctx, member: discord.Member):
c.execute("DELETE FROM BlacklistedUser_IDs WHERE User_IDs =%s AND Reason=%s;", (member.id, reason))
db.commit()
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="Unblacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Unblacklisted from Using commands!")
await ctx.send(embed=embed)
当尝试 运行 这个命令时,它不会 运行 句号.. 它会 运行 任何高于 SQL 但当涉及到 SQL 它不会 运行,用于黑名单和取消黑名单?一切看起来都是正确的,所以我对哪里出了问题感到困惑..
任何解决方案//问题修复?
您的代码示例中存在一些问题:
- 你插入数据的方式不对
db
和 c
未定义
- 您的
commands.check()
装饰器似乎有误
假设您的 table 名字是 table
,它有两行分别命名为 row_1
和 row_2
。如果你想插入两个值,例如 var_1
和 var_2
,你可以这样做:
with sqlite3.connect('database.db') as connection:
cursor = connection.cursor()
cursor.execute('INSERT INTO table(row_1, row_2) VALUES(?, ?)', (var_1, var_2))
connection.commit()
您的第二个错误可能来自 @commands.check(owner_ID)
。如果它只是一个 ID,您使用的是 commands.check()
the wrong way. In this case, if your goal is to make this command only accessible for the bot creator, you can use @commands.is_owner()
:
@bot.command()
@commands.is_owner()
async def blacklist(ctx, member: discord.Member, *, reason=None):
...
进行所有这些更改后,您的代码将如下所示:
from sqlite3 import connect
@bot.command()
@commands.is_owner()
async def blacklist(ctx, member: discord.Member, *, reason=None):
with connect('BlacklistedUsers.db') as conn:
c = conn.cursor()
c.execute("INSERT INTO BlacklistedUser_IDs(User_IDs, Reason) VALUES(?, ?)", (member.id, reason))
conn.commit()
embed = discord.Embed(colour=discord.Color.red())
embed.set_author(name="Blacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Blacklisted from Using commands!")
embed.add_field(name="Reason :", value=f"{reason}")
await ctx.send(embed=embed)
对于您的 is_allowed()
功能:请注意,我将 ctx
更改为 member_id
,因为您只需要会员 ID。当您调用此函数时,您只需传递成员 ID(例如 is_allower(ctx.member.id)
):
def not_allowed(member_id):
with connect('BlacklistedUsers.db') as conn:
c = conn.cursor()
c.execute("SELECT User_IDs FROM BlacklistedUser_IDs WHERE User_IDs=?", (member,))
UserIDs = cursor.fetchall()
return False if member_id in UserIDs else True
db = sqlite3.connect("BlacklistedUsers.db")
c = db.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS "BlacklistedUser_IDs" (
"User_IDs" INTEGER,
"Reason" TEXT,
PRIMARY KEY("User_IDs")
);''')
def owner_ID(ctx):
return ctx.author.id == 738332946934661132
def not_allowed(ctx):
member = ctx.discord.member.id
c.execute("SELECT `User_IDs` FROM `BlacklistedUser_IDs` WHERE `User_IDs`=%s", (member))
UserID = cursor.fetchall()
if ctx.author.id not in UserID:
print(UserID)
return True
else:
return False
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CheckFailure):
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="BlackListed!")
embed.add_field(name="Sorry", value=f"{ctx.author} It looks like you've been Blacklisted! for {Reason}", inline=False)
embed.add_field(name="If you would like to Appeal Or think this might have been a mistake Message", value="@L Y N X", inline=False)
await ctx.send(embed=embed)
@bot.command()
@commands.check(owner_ID)
async def blacklist(ctx, member: discord.Member, *, reason=None):
c.execute("INSERT INTO `BlacklistedUser_IDs`(User_IDs, Reason) VALUES(%s, %s)", (member.id, reason))
db.commit()
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="Blacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Blacklisted from Using commands!")
embed.add_field(name="Reason : ", value=f"{reason}")
await ctx.send(embed=embed)
@bot.command()
@commands.check(owner_ID)
async def unblacklist(ctx, member: discord.Member):
c.execute("DELETE FROM BlacklistedUser_IDs WHERE User_IDs =%s AND Reason=%s;", (member.id, reason))
db.commit()
embed = discord.Embed(title="", description="", colour=discord.Color.red())
embed.set_author(name="Unblacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Unblacklisted from Using commands!")
await ctx.send(embed=embed)
当尝试 运行 这个命令时,它不会 运行 句号.. 它会 运行 任何高于 SQL 但当涉及到 SQL 它不会 运行,用于黑名单和取消黑名单?一切看起来都是正确的,所以我对哪里出了问题感到困惑..
任何解决方案//问题修复?
您的代码示例中存在一些问题:
- 你插入数据的方式不对
db
和c
未定义- 您的
commands.check()
装饰器似乎有误
假设您的 table 名字是 table
,它有两行分别命名为 row_1
和 row_2
。如果你想插入两个值,例如 var_1
和 var_2
,你可以这样做:
with sqlite3.connect('database.db') as connection:
cursor = connection.cursor()
cursor.execute('INSERT INTO table(row_1, row_2) VALUES(?, ?)', (var_1, var_2))
connection.commit()
您的第二个错误可能来自 @commands.check(owner_ID)
。如果它只是一个 ID,您使用的是 commands.check()
the wrong way. In this case, if your goal is to make this command only accessible for the bot creator, you can use @commands.is_owner()
:
@bot.command()
@commands.is_owner()
async def blacklist(ctx, member: discord.Member, *, reason=None):
...
进行所有这些更改后,您的代码将如下所示:
from sqlite3 import connect
@bot.command()
@commands.is_owner()
async def blacklist(ctx, member: discord.Member, *, reason=None):
with connect('BlacklistedUsers.db') as conn:
c = conn.cursor()
c.execute("INSERT INTO BlacklistedUser_IDs(User_IDs, Reason) VALUES(?, ?)", (member.id, reason))
conn.commit()
embed = discord.Embed(colour=discord.Color.red())
embed.set_author(name="Blacklisted!")
embed.add_field(name="Success", value=f"{member.name}#{member.discriminator} -- {member.id} Has been Blacklisted from Using commands!")
embed.add_field(name="Reason :", value=f"{reason}")
await ctx.send(embed=embed)
对于您的 is_allowed()
功能:请注意,我将 ctx
更改为 member_id
,因为您只需要会员 ID。当您调用此函数时,您只需传递成员 ID(例如 is_allower(ctx.member.id)
):
def not_allowed(member_id):
with connect('BlacklistedUsers.db') as conn:
c = conn.cursor()
c.execute("SELECT User_IDs FROM BlacklistedUser_IDs WHERE User_IDs=?", (member,))
UserIDs = cursor.fetchall()
return False if member_id in UserIDs else True