Гузариш ба мундариҷа
Мавзӯи 4 аз 6

Эмбедҳо

Матни оддӣ зуд дилгир мекунад. Барои ҷавобҳои зебо дар Discord эмбедҳо ҳастанд — кортҳо бо сарлавҳа, матн, майдонҳо ва рахи ранга.

Embed

import discord

embed = discord.Embed(
    title="Профил: Анис",
    description="Викторинаҳо дар бораи кайҳонро дӯст медорад",
    color=discord.Color.blurple(),
)
embed.add_field(name="Хол", value="120")
embed.add_field(name="Ҷавобҳо", value="15")
embed.add_field(name="Дастовардҳо", value="🏆 Ғалабаи аввал", inline=False)
embed.set_footer(text="Викторина · мавсими 1")
embed.set_thumbnail(url=user.display_avatar.url)

await message.channel.send(embed=embed)
  • title — сарлавҳа, description — матни асосӣ (ғафс, курсив ва рӯйхатҳои Markdown-ро дастгирӣ мекунад);
  • color — рах дар чап: discord.Color.green(), red(), gold(), blurple() ё discord.Color(0xFF8800);
  • add_field(name, value, inline=True) — майдони «имзо: қимат»; inline=True майдонҳоро дар қатор мегузорад (то се), False — аз сатри нав. Қимат — сатри ғайрихолӣ: ададҳоро тавассути str() табдил диҳед;
  • set_footer(text=…) — матни хурд дар поён; set_thumbnail, set_image — расмҳо.

Эмбед — объекти оддӣ аст: онро дар функсия қисм ба қисм ҷамъ карда, баргардондан мумкин.

Ҷадвали пешсафон

players = [(name, score) for name, score in SCORES.items() if score > 0]
top = sorted(players, key=lambda kv: (-kv[1], kv[0]))[:3]
lines = [f"{medal} {name} — {score}" for medal, (name, score) in zip(["🥇", "🥈", "🥉"], top)]
embed = discord.Embed(title="Пешсафон", description="\n".join(lines) or "Ҳоло ҳеҷ кас бозӣ накардааст")

zip дар рӯйхати аз ҳама кӯтоҳ қатъ мешавад — агар бозингарон аз се камтар бошанд, медалҳои зиёдатӣ танҳо истифода намешаванд.

Фоизҳо бе хато

  • тақсим ба сифр: навомӯз ҳоло 0 ҷавоб дорад — инро алоҳида санҷед;
  • // ба поён яклухт мекунад, round — аз рӯи қоидаҳои оддӣ; он чиро, ки лозим аст, интихоб кунед;
  • ҳудудҳои «аз 80%»-ро тавассути >= муқоиса мекунанд, аз касрҳо бошад канора гирифтан мумкин: correct * 100 >= total * 80.

Хулоса

  • discord.Embed(title, description, color);
  • add_field(name, value, inline), set_footer(text);
  • channel.send(embed=embed);
  • мураттабсозӣ бо баробарӣ, zip бо медалҳо, фоизҳо бе тақсим ба сифр.