Не сохраняется данные при запуске on_ready (py, sqlite)
Доброго времени суток.
Возникла проблема при добавлении данных в on_ready при запуске бота.
Все работало нормально когда я использовал все в одном файле, но строчек в коде становилось все больше и больше и я перешел на cog.
Когда перенес все на "коги" перестали добавляться данные в базу данных:
Код с event (cogs/event.py):
import discord
from discord.ext import commands, tasks
from discord.utils import get
import asyncio
from datetime import datetime
import os, sqlite3
bot = commands.Bot(command_prefix=commands.when_mentioned_or("!"), case_insensitive=True, intents=discord.Intents.all())
base = sqlite3.connect('sakura.db')
cur = base.cursor()
class events(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener() #Анализатор сообщений
async def on_ready(self):
print('========================') #Консоль и запуск
print('[SAKURA] Sakura started.')
print('[SAKURA] Module load.')
if base:
print('[SAKURA] Base conected.')
print('========================')
await self.bot.change_presence(activity=discord.Game(name=f"Скоро уровни | V1.51"))
cur.execute("""CREATE TABLE IF NOT EXISTS users (
id INT,
nick TEXT,
name TEXT,
lvl INT,
exp INT,
set_lvl_nick INT,
server_id INT
)""")
cur.execute("""CREATE TABLE IF NOT EXISTS test (
nick TEXT,
name TEXT
)""")
for guild in bot.guilds:
for member in guild.members:
if cur.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None:
cur.execute(f"INSERT INTO users VALUES ('{member.id}', '{member.nick}', '{member.name}', 0, 0, 0, {guild.id})")
else:
pass
base.commit()
@commands.Cog.listener() #Анализатор сообщений
async def on_message(self, message):
#логер
print(f"----------------------------")
print(f"[{datetime.today()}]<{message.author.nick}> {message.content}")
print(f"----------------------------")
@commands.command()
async def test0(self, ctx):
cur.execute(f"INSERT INTO test VALUES ('q', 'q')")
base.commit()
def setup(bot):
bot.add_cog(events(bot))
main.py
import asyncio
from logging import fatal
import discord
from discord.ext import commands
import os, sqlite3
import random
from discord.utils import get
from discord import utils
from datetime import datetime, date, time
import json
#################### bot ####################
bot = commands.Bot(command_prefix=commands.when_mentioned_or("!"), case_insensitive=True, intents=discord.Intents.all())
base = sqlite3.connect('cogs/sakura.db')
cur = base.cursor()
#################### COG ####################
for file in os.listdir("./cogs"): # lists all the cog files inside the cog folder.
if file.endswith(".py"): # It gets all the cogs that ends with a ".py".
name = file[:-3] # It gets the name of the file removing the ".py"
bot.load_extension(f"cogs.{name}") # This loads the cog.
@bot.command()
@commands.is_owner()
async def reload(ctx, *, name: str):
try:
bot.reload_extension(f"cogs.{name}")
except Exception as e:
return await ctx.send(e)
await ctx.send(f'Модуль "**{name}**" перезагружен!')
@bot.command()
@commands.is_owner()
async def unload(ctx, *, name: str):
try:
bot.unload_extension(f"cogs.{name}")
except Exception as e:
return await ctx.send(e)
await ctx.send(f'Модуль "**{name}**" выгружен!')
@bot.command()
@commands.is_owner()
async def load(ctx, *, name: str):
try:
bot.load_extension(f"cogs.{name}")
except Exception as e:
return await ctx.send(e)
await ctx.send(f'Модуль "**{name}**" загружен!')
bot.run(os.getenv('TOKEN'))
В main.py работает все отлично, для проверки написал команду test0 (в файле event.py), данные вносятся, а в event.py не работает, таблица создается, но данные не вносятся.
Что я делаю не так?