Задать вопрос
@Nyxoy123

В чем ошибка IndentationError: expected an indented block after 'for' statement?

File "C:\Users\......\OneDrive\Рабочий стол\M......G\main.py", line 85
    cursor.execute(f"SELECT id FROM users where id={member.id}")#проверка, существует ли участник в БД
    ^
IndentationError: expected an indented block after 'for' statement on line 84


import os
import ffmpeg
import asyncio
import discord
import datetime
import json
import requests
import random
from discord.ext import commands
from youtube_dl import YoutubeDL
from asyncio import sleep
from discord.utils import get
from os import system
import asyncio
import aiohttp
import psutil
from asyncio import sleep
from discord import FFmpegPCMAudio, Activity, ActivityType
from discord.ext import commands
from youtube_dl import YoutubeDL
from asyncio import sleep
import requests as rq, time
from discord.ext import tasks
import requests
import json
from pprint import pprint
import sqlite3
from tabulate import tabulate #удобный модуль для рисования таблиц

intents = discord.Intents.default()
intents.members = True

Bot = commands.Bot(intents=intents, command_prefix = lambda b, m: ["m.", "M.", "м.", "М."])
Bot.remove_command('help')

Owners = ["9797.......................346"]

conn = sqlite3.connect("server.db") # или :memory:
cursor = conn.cursor()

@Bot.event
async def on_ready() -> None:
    cursor.execute("""CREATE TABLE shop(
        id INT,
        name TEXT,
        cost INT
)""")
    cursor.execute("""CREATE TABLE users(
        id INT,
        nickname TEXT,
        mention TEXT,
        money INT,
        rep_rank TEXT,
        inventory TEXT,
        lvl INT,
        xp INT
)""")
    
    for guild in bot.guilds:#т.к. бот для одного сервера, то и цикл выводит один сервер
        print(guild.id)#вывод id сервера
        serv=guild#без понятия зачем это
        for member in guild.members:#цикл, обрабатывающий список участников
        cursor.execute(f"SELECT id FROM users where id={member.id}")#проверка, существует ли участник в БД
            if cursor.fetchone()==None:#Если не существует
            cursor.execute(f"INSERT INTO users VALUES ({member.id}, '{member.name}', '<@{member.id}>', 50000, 'S','[]',0,0)")#вводит все данные об участнике в БД
            else:#если существует
                pass
            conn.commit()#применение изменений в БД
    print(f'[ START ] {Bot.user} запущен!')

Bot.run('E7SrV.............................6vka4Q')
  • Вопрос задан
  • 264 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Нужен отступ в следующей строке после объявления цикла for:
...
for member in guild.members:#цикл, обрабатывающий список участников
    cursor.execute(f"SELECT id FROM users where id={member.id}")#проверка, существует ли участник в БД
    if cursor.fetchone()==None:#Если не существует
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы