Форум сайта python.su
							
  0  
								
								import discord
from discord.ext import commands
import sqlite3
from  configEKObot import settings
client = commands.Bot(command_prefix = settings)
client.remove_command('help')
connection = sqlite3.connect('serve.db')
cursor = connection.cursor()
@client.event
async def on_ready():
    cursor.execute(“”“CREATE TABLE IF NOT EXISTS users (
        name TEXT,
        id INT,
        cash BIGINT,
        rep INT,
        lvl INT
    )”“”)
    for guild in client.guilds:
        for member in guild.members:
            if cursor.execute(f“SELECT id FROM users WHERE id = {member.id}”).fetchone() is None:
                cursor.execute(f“INSERT INTO users VALUES ('{member}', ‘{member.id}’, 0, 0, 1)”)
            else:
                pass
    connection.commit()
    print('Bot connected')
@client.event
async def on_member_join(member):
    if cursor.execute(f“SELECT id FROM users WHERE id = {member.id}”).fetchone() is None:
        cursor.execute(f“INSERT INTO users VALUES ('{member}', ‘{member.id}’, 0, 0, 1)”)
        connection.commit()
    else:
        pass
@client.command(aliases = )
async def __balance(ctx, member: discord.Member = None):
    if member is None:
        await ctx.send(embed = discord.Embed(
            description = f“”“Баланс Пользователя **{ctx.author}** составляет **{cursor.execute(”SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()} :leaves:**“”“
        ))
    else:
        await ctx.send(embed=discord.Embed(
            description = f”“”Баланс Пользователя **{member}** составляет **{cursor.execute(“SELECT cash FROM users WHERE id = {}”.format(member.id)).fetchone()} :leaves:**“”"
        ))
client.run(settings)
Офлайн
							
  0  
								
								когда ввожу !balance выводит ошибку
Ignoring exception in command __balance:
Traceback (most recent call last):
  File “C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\core.py”, line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File “C:\pythonProject1\DSbot.py”, line 46, in __balance
    description = f“”“Баланс Пользователя **{ctx.author}** составляет **{cursor.execute(”SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()} :leaves:**“”“
TypeError: ‘NoneType’ object is not subscriptable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File ”C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\bot.py“, line 939, in invoke
    await ctx.command.invoke(ctx)
  File ”C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\core.py“, line 863, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File ”C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: ‘NoneType’ object is not subscriptable
Офлайн
							
  0  
								
								кто шарит помогите
Офлайн
							
  0  
								
								Up
Офлайн
							
  857  
								
								Лучше убери f-строки и сделай простые строки. Строй их постепенно. Длинные строки разбивай на несколько коротких. Так ты быстрее и точнее будешь ошибки находить. Да и сами ошибки будут реже появляться в коротких и понятных строках, чем в длинных строках, перегруженных вложенными операциями.
Касаемо отладки ботов (для сервисов типа Telegram, Slack, Discord и подобных), в случае каких-то ошибок нужно сделать так: сделать простейшего бота (без базы данных даже) и запустить его; потом, если бот работает, усложнить его немного (добавить базу данных) и запустить его; потом, если бот работает, усложнить его ещё больше (добавить команд для базы данных) и запустить его; и так далее, пока не дойдёшь до всех сложных операций, которые вызывают ошибки.
Это общий подход при отладке ботов и не только ботов.
tags: debug bot
Офлайн