尝试制作特殊的 Discord 机器人消息

时间:2021-03-25 17:01:10

标签: python discord.py

我正在尝试制作一个 Discord 机器人(使用 discord.py),使用在 GitHub (https://github.com/obskyr/khinsider) 上找到的程序从 khinsider 搜索和发布视频游戏配乐。

搜索的概念是:用户告诉机器人他们想要搜索某个音轨,所以他们输入游戏/系列名称,程序将所有名称放在一个列表中,然后将列表转换为一个特殊的消息,以便用户可以选择特定的配乐。

以下是搜索“shin megami tensei iii”的概念示例:

该列表可以根据搜索的音轨数量进行调整,因此并不总是像示例中那样有 6 个音轨。

这是行不通的(它返回 SyntaxError: invalid syntax),我什至不知道 {} 是否应该这样使用:

await message.channel.send("Liste des OSTs disponibles :\n**```\n" + for i in range(len(albumlist)): "{} - {}\n".format(i + 1, albumlist[i]) + "```**")

(专辑列表是我的列表,其中包含搜索的音轨名称。)

这是我的完整代码:

import discord
import khinsider

client = discord.Client()

@client.event
async def on_ready():
    await client.change_presence(status=discord.Status.dnd, activity=discord.Game(name=".hugOST | by mirai#0001"))
    print('Parfaitement connecté au bot Discord suivant: {0.user}'.format(client))

@client.event
async def on_message(message):
    def author_check(author):
        return lambda message: message.author == author

    if message.author == client.user:
        return
    if message.content.startswith('.hugOST'):
        await message.channel.send("Quelle action souhaitez-vous faire ?\n**```\n[search] Rechercher une OST\n[download] Télécharger une OST```**")
        msg = await client.wait_for("message", check=author_check(message.author))
        if msg.content == "search":
            await message.channel.send("Écrivez le nom du jeu/série que vous souhaitez télécharger.")
            msg = await client.wait_for("message", check=author_check(message.author))
            if msg.content != "":
                albumlist = khinsider.search(msg.content)
                await message.channel.send("Liste des OSTs disponibles :\n**```\n" + for i in range(len(albumlist)): "{} - {}\n".format(i + 1, albumlist[i]) + "```**")

(khinsider只是为了搜索和下载原声带的功能)

我该如何修复它才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试添加编号行。尝试循环访问专辑列表并连接到要发送的最终消息,如下所示:

>>> message = ""
>>> eeee = [1,2,3]
>>> for i in range(len(eeee)):
    message += f"{i} test message"

    
>>> message
'0 test message1 test message2 test message'

适应您的需求后,您只需:

await message.channel.send(message)

如果 message 变量名干扰其他名称,您可能需要更改它。