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

说,send_message和发送,在@bot事件中不工作怎么办?discord.py

鲁龙野
2023-03-14

您好,请重新阅读有关discord的所有文档。不幸的是,在聊天室发送消息时没有发现像on_member_join事件这样的简单事件?

我使用非标准的构造,这样的构造客户端=discord。Client(),但据我所知,新的bot=命令。Bot(命令前缀='!')

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print('------')

@bot.event
async def on_member_join(member):
   print(member.name)   
   bot.send(member.name);

Print()正确地输出到控制台,但是将其发送到discord的聊天室不幸地不起作用(

我还尝试:

  1. bot.say(member.name);
  2. bot.send_message(member.name)
  3. bot.send(member.name)

但所有的时间错误发出"'Bot'对象没有属性'say'"

请告诉我我做错了什么?

共有1个答案

宗政霄
2023-03-14

discord的版本。您正在使用的py将更改您发送消息的方式。

不和谐。py0.16,“异步”分支是当前的稳定版本。它有两种发送消息的方式。(在下面,请注意,BotClient的一个子类,因此每个Bot也可以访问所有Client方法)

>

  • 使用Client.send_message(目标,消息)。这是你在on_message(消息)中使用的

    await bot.send_message(message.channel, "I am responding to your message")     
    

    使用Bot。说(信息)。这是一种将消息发送回调用命令的通道的简单方法。它只在命令中工作。

    await bot.say("I am responding to your command")
    

    不和谐。py1.0,“重写”分支是最新的分支。它仍然被认为是实验性的,但完全可用。许多变化之一是消息发送的工作方式。

    现在,我们不再在客户端上使用发送消息的方法,而是在接收消息的对象上使用发送消息的方法。这些都实现了Messagable抽象基类,并且有一个发送方法。在您的on_message中,这看起来像

    await message.channel.send("I am responding to your message")
    

    我相信您使用的是1.0版

  •  类似资料:
    • 在我们的节奏工作流程中,我们通常需要等待一定时间的外部事件才能继续(即电子邮件阅读、链接点击等)。 我想知道什么是将这些事件通知我们工作流程的最佳方式。信号是正确的方式,还是我们应该创建一个等待事件的活动? 根据我所看到的,我们需要创建一个信号通道,但是上下文在活动中不可用。

    • 在不和谐中发送私人消息的问题。以下是两个代码示例(简化)。 此代码块将消息(cookie表情符号)发回给用户,无论它是私人聊天(与机器人)还是频道 这段代码私下向用户发送了一条消息,如果用户在通道中发送了命令,它就可以工作了,我对此很满意。 问题是,我希望用户能够在频道或私人消息中向bot发送一条消息“.cookie”,并获取私人消息(cookie表情符号)。 最后一段代码。如果我发出命令。coo

    • 本文向大家介绍请说说,你在工作中喜欢和哪种人共事?相关面试题,主要包含被问及请说说,你在工作中喜欢和哪种人共事?时的应答技巧和注意事项,需要的朋友参考一下

    • redis的事件处理是怎么工作的?

    • 本文向大家介绍来说一说,你在工作中喜欢和哪种人共事?相关面试题,主要包含被问及来说一说,你在工作中喜欢和哪种人共事?时的应答技巧和注意事项,需要的朋友参考一下 负责任、靠谱的人。 工作交给ta很放心,结果常常超出自己的预期,能同甘共苦,亦师亦友那种。