Discord py 向频道发送消息

Posted

技术标签:

【中文标题】Discord py 向频道发送消息【英文标题】:Discord py send message to channel 【发布时间】:2020-04-07 12:45:09 【问题描述】:

我正在尝试使用 discord.py 库将消息从一个频道发送到另一个频道。 Idea - channel_1 用户无权阅读和发送 channel_2 中的消息。我尝试编写应该发送这些消息的机器人 - 例如,用户编写!发送“channel2”“hello”并将此消息发送到通道 2。但我尝试执行此操作时出错

    import os
import random

import discord
from discord.ext import commands
from dotenv import load_dotenv

load_dotenv()
token = os.getenv('DISCORD_TOKEN')

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

@bot.command(pass_context=True)
async def xsend(ctx, *, message):
    await bot.delete_message(ctx.message)
    await ctx.send(discord.Object(id='652024045339934731'), message)

bot.run(token)

我得到的错误 - TypeError: send() 接受 1 到 2 个位置参数,但给出了 3 个

【问题讨论】:

【参考方案1】:

这不是 discord.py-rewrite,对吧?所以只需使用bot.get_channel() 并通过bot.send_message() 发送消息。 Link to documentation (顺便说一句,ctx.send() 将向调用的频道发送消息,如果我知道的话)

@bot.command(pass_context=True)
async def xsend(ctx, *, message: str):
    await bot.delete_message(ctx.message)
    channel = bot.get_channel('652024045339934731')
    if channel:
        await bot.send_message(channel, message)

(discord.py-rewrite 的版本)

@bot.command(pass_context=True)
async def xsend(ctx, *, message: str):
    await ctx.message.delete()
    channel = bot.get_channel(652024045339934731)
    if channel:
        await channel.send(message)

【讨论】:

谢谢。有用。决定更改一些功能 - 用户向频道发送消息(带有附件和链接)。之后运行机器人并将最后一条消息作为嵌入消息转发到另一个频道,但机器人只发送文本,而不是图片或链接...尝试使用 embed.add_field: pastebin.com/p8TB4D7i 但得到一个错误 - 'list' 对象没有属性“附件” 语法有问题。不是附件e而是附件。

以上是关于Discord py 向频道发送消息的主要内容,如果未能解决你的问题,请参考以下文章

如何从特定频道狙击消息(discord.py)

Discord.py - 如何接收和发送消息到特定频道?

尝试向多个 Discord 频道发送消息

Discord.py bot 在添加反应时将消息重新发送到另一个频道中断

Discord.js 机器人无法向特定频道发送消息

如何在 discord.js 中同时向不同频道发送消息?