是否可以使漫游器在漫游器所在的每个服务器上发送1条消息,而无需将消息发送到每个通道?我有一个有效的代码,但它发送到所有频道
@client.command()
async def broadcast(ctx, *, message):
for guild in client.guilds:
for channel in guild.channels:
if guild.name == ctx.author.guild.name:
pass
else:
try:
await channel.send(message)
await ctx.send(
'Sent to {} (ID: {}, Owner: {}#{} With {} Members)'.format(
guild.name,
guild.id,
guild.owner.name,
guild.owner.discriminator,
guild.member_count
))
except:
await ctx.send(
'Could not send at {} (Channel ID: {}). (Owner: {}#{})'.format(
guild.name,
channel.id,
guild.owner.name,
guild.owner.discriminator,
))
return
else:
break
please help
答案 0 :(得分:1)
如果您使用
for guild in client.guilds:
channel = discord.utils.get(guild.text_channels, name="general")
if channel != None:
#do something
您可以从每个行会获得#general频道。那只是一个频道(Discord允许多个频道共享名称,但是大多数人不会这样做,而且.get()
只会返回第一个)。
这比遍历所有频道要好得多,也比挑选随机频道要好一些,但是我仍然会考虑让公会设置自己的广播接收频道。
经过测试并且可以正常工作,尽管我的机器人只存在于一台服务器中,但我不知道尝试在100台以上的服务器中进行操作是否会产生未知的后果。