@happyjuic

Нужна с помощь с discord.py?

При попытке запустить код, выдаёт ошибку, и я уверен, что ошибка тут:
@bot.event
async def on_ready():
    guild = 
    serv = guild #без понятия зачем это
    for member in guild.members:#цикл, обрабатывающий список участников
            c.execute(f"SELECT id FROM userifo where id={member.id}")#проверка, существует ли участник в БД
            if c.fetchone()==None:#Если не существует
                c.execute(f"INSERT INTO userinfo VALUES ({member.id}, 5, 0)")#вводит все данные об участнике в БД
            else:#если существует
                pass
            sqlite_connection.commit()#применение изменений в БД


Что написать? Чему равно guild???
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kseiru
Попробуйте bot.fetch_guild(id)
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
f"SELECT id FROM userifo where id={member.id}
Никогда так не делай.
А вообще, что ты пытаешься сделать? Перебрать все сервера и занести их участников в БД?
Во-первых, у класса Client (и у его наследника discord.ext.commands.Bot) есть свойство guilds. Это список отдельных серверов, можешь просто перебрать его for'ом.
Во-вторых, в sqlite есть синтаксис INSERT ON CONFLICT UPDATE, который позволяет добавить запись или обновить её, если она уже существует, за один запрос а не за два.
В-третьих, твой алгоритм перебора не сумеет обнаружить участников, покинувших сервер, так как они просто не появятся в списке участников.
В-четвёртых, если ты не понимаешь, зачем в коде та или иная строка, тебе рано браться за написание ботов. Поучи сначала основы питона, почитай документацию на discord.py, потом вернёшься к теме. Сэкономишь много времени на вопросах.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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