Где ошибка в выводе словаря в чат discord py?

Рейтинг: 0Ответов: 1Опубликовано: 07.03.2023

единственное сообщение в канале с ID - 1082311110176280627 должно редактироваться каждые две секунды на переменную carstake вывод должен быть без кавычек и скобок, двоеточие должно остаться! Вывод будет в строчку ниже приведены примеры

carstake={"Автомобили":"кем они заняты"}

@bot.event
async def on_ready():
    global a
    global carstake
    await bot.change_presence(status = discord.Status.online, activity = discord.Activity(name = f'!cavalli', type = discord.ActivityType.playing))
    chann = bot.get_channel(1082311110176280627)
    await chann.purge()
    carmsg = await chann.send("A")
    while True:
        for key in carstake.items():
            await carmsg.edit(content = "{0}: {1}".format(key,value))
        time.sleep(2)

При запуске выдает в предпоследней строчке:

await carmsg.edit(content = "{0}: {1}".format(key,value))
NameError: name 'value' is not defined

Должно быть так: сообщение должно редактироваться каждые 2 секунды и писать словарь carstake без скобок и кавычек просто допустим Muxa:rs7 Хочу написать на базе этого Учтите что словарь carstake будет изменяться при работе дискорд бота

import time
t = {'Muxa':'rs7', 'nedetvora':'rs6'}
while True:
    for key, value in t.items():
        
        print("{0}: {1}".format(key,value))
    time.sleep(2)

Примерный результат редактированного сообщения: Автомобили: и кем они заняты Muxa:rs7 nedetvora:rs6

Ответы

▲ 0

Создадим переменную cars, для примера:

cars = {"Автомобиль 1":"Что-то", "Автомобиль 2": "Что-то"}

Отправляем сообщение в нужный Вам канал:

channel = ...
message = await channel.send("Тест")

Теперь создадим цикл:

while True:
    for car in cars.items():

Используя переменную key вытаскиваем значения из cars:

        await message.edit(content = f"{car[0]}: {car[1]}")
        await asyncio.sleep(2) #советую использовать asyncio.sleep

В python индекс начинается с 0, соответственно:

car[0] — значение из переменной cars: "Автомобиль 1"

car[1] — значение из переменной Автомобиль 1: "Что-то"

Полный код:

cars = {"Автомобиль 1":"Что-то", "Автомобиль 2": "Что-то"}

@bot.event
async def on_ready():
    channel = ...
    message = await channel.send("Тест")
    while True:
        for car in cars.items():
            await message.edit(content = f"{car[0]}: {car[1]}")
            await asyncio.sleep(2) #советую использовать asyncio.sleep

Что получилось: Что получилось