Python (Discord.py)向所有行会发送消息
我一直在尝试向我的机器人所在的所有行会发送相同的消息,但没有任何效果,我也没有在文档中找到类似的东西。这可能吗?我怎么做 编辑:好的,让我们想象一下,我的机器人所做的是检查一个新闻网页,如BBC或任何其他。机器人将每五分钟检查一次网络,并将新闻链接发送到执行.start(例如)的行会。我实现这一点的方法是,通过一个命令为每个公会生成一个循环,想法是每个公会只有一个循环。Python (Discord.py)向所有行会发送消息,python,python-3.x,discord.py,discord.py-rewrite,Python,Python 3.x,Discord.py,Discord.py Rewrite,我一直在尝试向我的机器人所在的所有行会发送相同的消息,但没有任何效果,我也没有在文档中找到类似的东西。这可能吗?我怎么做 编辑:好的,让我们想象一下,我的机器人所做的是检查一个新闻网页,如BBC或任何其他。机器人将每五分钟检查一次网络,并将新闻链接发送到执行.start(例如)的行会。我实现这一点的方法是,通过一个命令为每个公会生成一个循环,想法是每个公会只有一个循环。对于bot中的公会。公会: for guild in bot.guilds: await guild.text_chan
对于bot中的公会。公会:
for guild in bot.guilds:
await guild.text_channels[0].send(<message>)
等待公会。文本_频道[0]。发送()
这将获得在公会中找到的第一个文本频道,并向其发送消息
您可以通过键入
ctx.bot
从上下文变量获取bot。在出现不一致时,您可能需要注意“向每个X发送消息”。无论是管理服务器中的每个成员,还是向每个公会的通道发送消息,都可能被视为API滥用。欢迎使用堆栈溢出!虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
class send_all(commands.Cog):
def __init__(self,bot):
self.bot = bot
@commands.command()
async def send(self,ctx,*message_to_send):
guild = ctx.message.guild
output = ' '
author = ctx.message.author
for word in message_to_send:
output += word
output += ' '
for member in self.bot.get_all_members():
try:
embed = discord.Embed(title="",colour = discord.Colour.green())
embed.add_field(name="**From server:**",value= guild.name)
embed.add_field(name = "**From Mod/Admin:**",value = author.name)
embed.add_field(name="**Message:**",value = output)
# await ctx.send(embed=embed)
await member.send(embed=embed)
except (discord.HTTPException, discord.Forbidden,AttributeError):
continue