Я тут снова хочу спросить вас почему не работает совершенно проверка которую написал.
На команды работает, а вот на client event не хочет. В чем проблема?
Код до:
@client.event
async def on_message(message):
channel = client.get_channel(889788953216032780)
buxoy = message.content
content = int(float(f'{buxoy}'))
if message.author.bot:
return
else:
con = sql.connect('lyam.db')
lastnumber = 0
if not message.content.isnumeric() and message.author.bot:
return await channel.send('❌ Неверно! Не используйте буквы :(')
with con:
cur = con.cursor()
# cur.execute("CREATE TABLE IF NOT EXISTS `lyam` (`howmuch` INT)")
# cur.execute(f"INSERT INTO `lyam` VALUES ('0')")
cur.execute("SELECT * FROM `lyam`")
rows = cur.fetchall()
receivenumber = content
for row in rows:
lastnumber = row[0] + 1
if receivenumber != lastnumber:
return await channel.send(f'❌ Неверно! Следующая цифра: {lastnumber}')
cur.execute(f"UPDATE `lyam` SET `howmuch`={lastnumber}")
lastnumber1 = lastnumber + 1
await channel.send(f'✅ Новая цифра: {lastnumber1} | Пиши следующую :)')
con.commit()
cur.close()
Я решил создать проверку чтобы сам клиент работал только в 1 заданном канале!
def predicate(ctx: commands.Context):
channel = discord.utils.get(ctx.guild.text_channels, id=889788953216032780)
if ctx.channel != channel:
return False
else:
return True
has_channel = commands.check(predicate)
После чего код изменился на:
def predicate(ctx: commands.Context):
channel = discord.utils.get(ctx.guild.text_channels, id=889788953216032780)
if ctx.channel != channel:
return False
else:
return True
has_channel = commands.check(predicate)
@client.event
@has_channel
async def on_message(message):
channel = client.get_channel(889788953216032780)
buxoy = message.content
content = int(float(f'{buxoy}'))
if message.author.bot:
return
else:
con = sql.connect('lyam.db')
lastnumber = 0
if not message.content.isnumeric() and message.author.bot:
return await channel.send('❌ Неверно! Не используйте буквы :(')
with con:
cur = con.cursor()
# cur.execute("CREATE TABLE IF NOT EXISTS `lyam` (`howmuch` INT)")
# cur.execute(f"INSERT INTO `lyam` VALUES ('0')")
cur.execute("SELECT * FROM `lyam`")
rows = cur.fetchall()
receivenumber = content
for row in rows:
lastnumber = row[0] + 1
if receivenumber != lastnumber:
return await channel.send(f'❌ Неверно! Следующая цифра: {lastnumber}')
cur.execute(f"UPDATE `lyam` SET `howmuch`={lastnumber}")
lastnumber1 = lastnumber + 1
await channel.send(f'✅ Новая цифра: {lastnumber1} | Пиши следующую :)')
con.commit()
cur.close()
Посоветуйте как сделать так чтобы сам клиент работал только в определенном заданном канале