当前位置: 首页 > 知识库问答 >
问题:

不一致py使bot复制每条消息,包括文件

慕铭
2023-03-14

我的目标是创建一个discord bot,该bot使用用户发送的相同消息进行响应,如果用户发送文件,则bot将发送该文件的链接。

我可以让两个部分分开工作,但在一起我只是遇到了问题(见底部),在我目前的代码中只有独立文件发送工作,文本消息没有,如果你有文本文件,文件链接将由机器人发送但是文本不会。如果我把第二部分放在上面,那么我得到的基本上是完全相反的,只有文本被发送,没有文件。

我的代码:

@client.event # Clone message
async def on_message(message):
    await client.process_commands(message)
    if message.author == client.user:
        return
    ch = message.channel
    await ch.send(message.content)

@client.event # Clone file
async def on_message(message):
    await client.process_commands(message)
    if message.author == client.user:
        return
    url = message.attachments[0].url
    ch = message.channel
    await ch.send(url)

底部的克隆文件总是出现索引器错误:列表索引超出范围错误

底部的克隆消息总是发出400错误请求(错误代码:50006):无法发送空消息错误


共有1个答案

叶鸿振
2023-03-14

正如@FierySpectre指出的,您正在覆盖on_message函数。你可以把你想做的事情组合成一个单一的函数。

@client.event
async def on_message(message):
    await client.process_commands(message)
    if message.author == client.user:
        return
    ch = message.channel
    try: # tries to send the url of the file
        await ch.send(message.attachments[0].url)
    except IndexError: # if index error is received, that means the user entered a regular message
        pass
    await ch.send(message.content) # prints out the message
 类似资料:
  • 我对discord机器人和python有点陌生,所以我在理解哪里出了问题时遇到了一些困难。基本上我想让我的机器人锁定一条消息。我找到了一个python代码的文档,上面说要使用pin_message(),所以我有: 但我得到以下错误AttributeError:“TextChannel”对象没有属性“pin_message” 当我查看Discord文档时,它会显示PUT/channels/{chan

  • 免责声明:我已经转发了这个问题,并删除了最初的问题,因为一个人给出了一个愚蠢的答案,降低了这个问题的可见性。 基本上,我正在将我的机器人迁移到discord.py的重写版本。 我正在测试机器人与前一个只有几个功能,现在我测试音频功能与on_voice_state_update()事件,机器人应该播放音频时,有人加入一个频道。 我写了这样的事件: 这段代码的作用是,检查用户是否加入了语音频道,加入了

  • 当我在twitch上开始直播时,我正试图让我的机器人向指定频道发送消息。到目前为止,我还在忙于从我的状态中获取正确的“活动”,这表示我正在流媒体。到目前为止,我得到的是: 提前感谢任何帮助!^^

  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!

  • 我想我的机器人发送该特定服务器的前缀时,它pinged(提到)。 我用谷歌搜索了它,但它不起作用(Discord.py-当它发出ping时如何生成机器人消息?) 它停止执行其他命令等。 这是我的密码 改为给我发这个消息

  • 如果我执行类似于它工作正常。 但是,我找不到一种方法使其适用于ping。我尝试了机器人ID和名称。我的机器人ID代码: 有人能帮忙吗?