为什么不将消息发送到频道?

时间:2018-08-26 19:10:10

标签: python discord.py

嗨,我是使用Discord.py创建机器人的新手。尽管现在遇到问题,但我在使用文档方面相处得很好。

这是commands.py中的所有代码。

# All commands
cmds = {
    # The 'cmd' variable I'm using in the second code block
    "ping": {
        "name": "Ping",
        "description": "Ping pong",
        "usage_str": "ping",
        "rank_needed": 0,
        "execute": None
    }
}

# Define the function
def ping(client, message, channel, args):
    print("SENDING MESSAGE!")
    client.send_message(channel, "Pong!")

# Set the execute index in the dictionary to equal the function
cmds["ping"]["execute"] = ping

这是main.py中的代码,它正在调用ping函数。

cmd["execute"](client, message, channel, content)

当我尝试执行功能时,尽管控制台上已打印“ SENDING MESSAGE”,但没有消息发送到通道。为什么是这样?我想念什么?

1 个答案:

答案 0 :(得分:0)

您需要await send_message协程,这意味着ping本身必须是协程,并且是在事件循环内执行的。我建议使用discord.ext.commands扩展名:

from discord.ext import commands
import discord

bot = commands.Bot("!")

@bot.command(pass_context=True)
async def ping(ctx, channel: discord.Channel, *, message):
    print("SENDING MESSAGE!")
    await bot.send_message(channel, message)

bot.run("token")