@1AAAhelpmeAAA1

При входе на сервер функция отвечающая за ввод данных в db не работает. тоже самое происходит с функцией, которая вызывается коммандой. что делать?

Во время работы над дискорд-ботом мне понадобилось использовать SQlite для хранения данных о пользователе, для этого было создано две функции, одна из которых активируется при входе пользователя на сервер, а другая при вводе команды вручную, для проверки функций была создана еще одна команда - тестдатабазы. Но при входе на сервер - в базу данных не вводится никакой информации, а при использовании команды - в консоль пишет сообщение о том - что данной команды не существует
текст ошибки
discord.ext.commands.errors.CommandNotFound: Command "новаяучетнаязапись" is not
found
. остальные функции работают исправно.

вот мой код:
import datetime
import sqlite3
import discord
from discord.ext import commands
from datetime import datetime

client = discord.ext.commands.Bot(command_prefix = "D.")

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_member_join(member):
    con = sqlite3.connect('mydatabase.db')
 
    cursorObj = con.cursor()
 
    cursorObj.execute('create table if not exists assignments(id TEXT, rawexp INTEGER, date TEXT, exp INTEGER, level INTEGER)')

    userdate = datetime.now()
    userid = member.author.id
    userrawexp = 0
    userexp = 0
    userlevel = 1
 
    cursorObj.execute("INSERT INTO assignments VALUES(?, ?, ?, ?, ?);", (userid, userrawexp, userdate, userexp, userlevel))
 
    con.commit()

@client.command()
async def тестдатабазы(ctx):
        con = sqlite3.connect('mydatabase.db')
        cursorObj = con.cursor()
        cursorObj.execute("SELECT * FROM assignments;")
        d = cursorObj.fetchall()
        await ctx.send(f'{d}')

@client.command
async def новаяучетнаязапись(ctx):
    con = sqlite3.connect('mydatabase.db')
 
    cursorObj = con.cursor()
 
    cursorObj.execute('create table if not exists assignments(id TEXT, rawexp INTEGER, date TEXT, exp INTEGER, level INTEGER)')

    userdate = datetime.now()
    userid = ctx.author.id
    userrawexp = 0
    userexp = 0
    userlevel = 1
 
    cursorObj.execute("INSERT INTO assignments VALUES(?, ?, ?, ?, ?);", (userid, userrawexp, userdate, userexp, userlevel))
 
    con.commit()

@client.command()
async def аа(ctx, *, text):
        await ctx.send(f'aa')


@client.command()
async def время(ctx):
    now = datetime.now()
    s = now.time()
    await ctx.send(f'{s}')

@client.command()
async def тестсинтаксиса(ctx):
    await ctx.send(f"```lol```")

@client.command()
async def примитивныйкалькулятор(ctx,arg1,arg2,arg3):
    a = arg1
    b = arg2
    c = arg3
    if (b) == "*" :
        a = int(a) * int(c)
    else:
        if (b) == "+":
            a = int(a) + int(c)
        else:
            if (b) == "-":
                a = int(a) + int(c)
            else:
                if (b) == "/":
                    a = int(a) / int(c)    
    await ctx.send(f'{int(a)}')

client.run('Token')
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
По умолчанию Discord не присылает события on_member_join, для этого надо явно включить member intents.

intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='!', intents=intents)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы