【问题标题】:How to make more than one Embed with discord.py如何使用 discord.py 制作多个嵌入
【发布时间】:2021-12-20 09:20:54
【问题描述】:

我遇到一个问题,当我在 Discord.py 上制作多个 Embed 时,第一个命令没有响应,但第二个命令响应。

这是我的代码:

import discord
from discord.ext import commands

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    await client.change_presence(status=discord.Status.online, activity=discord.Game('private'))
    print('bot is online')
    
@client.event
async def on_message(message):
    if message.content.startswith('.kade'):
        embedVar = discord.Embed(title="Kade Engine Download", description="Downloads for Kade Engine 1.8", color=0x2C93FA)
        embedVar.add_field(name="Kade Engine Installation", value="https://github.com/KadeDev/Kade-Engine/releases/tag/1.8", inline=False)
        embedVar.add_field(name="Kade Engine Source (Recommended for Mod Makers)", value="https://github.com/KadeDev/Kade-Engine", inline=False)
        await message.channel.send(embed=embedVar)

@client.event
async def on_message(message):
    if message.content.startswith('.week'):
        embedVar = discord.Embed(title="How to make a week", description="How to make a week", color=0x2C93FA)
        embedVar.add_field(name="test", value="test", inline=False)
        embedVar.add_field(name="test", value="test", inline=False)
        await message.channel.send(embed=embedVar)


client.run('WONT SHOW BOT TOKEN')

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    当您创建on_message() 事件时,您不应该多次创建它。创建一个并创建多个if/elif 语句或使用commands,这将为您提供更多功能。

    您的固定代码为 on_message()(删除两个 on_message 事件并替换为):

    @client.event 
    async def on_message(message):
        if message.content.startswith('.kade'):
            embedVar = discord.Embed(title="Kade Engine Download", description="Downloads for Kade Engine 1.8", color=0x2C93FA)
            embedVar.add_field(name="Kade Engine Installation", value="https://github.com/KadeDev/Kade-Engine/releases/tag/1.8", inline=False)
            embedVar.add_field(name="Kade Engine Source (Recommended for Mod Makers)", value="https://github.com/KadeDev/Kade-Engine", inline=False) 
            await message.channel.send(embed=embedVar)
        
        elif message.content.startswith('.week'):
            embedVar = discord.Embed(title="How to make a week", description="How to make a week", color=0x2C93FA)
            embedVar.add_field(name="test", value="test", inline=False)
            embedVar.add_field(name="test", value="test", inline=False)
            await message.channel.send(embed=embedVar)
    

    或使用命令(推荐):

    @client.command()
    async def kade(ctx):
        embedVar = discord.Embed(title="Kade Engine Download", description="Downloads for Kade Engine 1.8", color=0x2C93FA)
        embedVar.add_field(name="Kade Engine Installation", value="https://github.com/KadeDev/Kade-Engine/releases/tag/1.8", inline=False)
        embedVar.add_field(name="Kade Engine Source (Recommended for Mod Makers)", value="https://github.com/KadeDev/Kade-Engine", inline=False)
    
        await ctx.send(embed=embedVar)
    
    @client.command()
    async def week(ctx):
        embedVar = discord.Embed(title="How to make a week", description="How to make a week", color=0x2C93FA)
        embedVar.add_field(name="test", value="test", inline=False)
        embedVar.add_field(name="test", value="test", inline=False)
    
        await ctx.send(embed=embedVar)
    

    【讨论】:

    • 如果您有任何疑问,请告诉我。
    • 我想在这个答案中补充一点,如果您最终使用命令扩展,请注意on_message 事件。每当您同时拥有命令和on_message 事件时,您需要确保首先使用await client.process_commands(message) 处理相关命令。
    • 非常感谢Riven,我被大脑阻塞了这么久,我是初学者,所以这真的很有帮助。再次感谢您。
    猜你喜欢
    • 2021-07-28
    • 2021-01-01
    • 2020-12-26
    • 2020-04-21
    • 2021-02-18
    • 2021-06-17
    • 2021-03-31
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多