我希望我的机器人从该服务器的所有6个通道中发布引脚,但是,我的机器人仅从调用该命令的当前通道中获取引脚。我想知道是否有解决办法。 Discord版本1.0.0A
我目前的代码是:
if "seepins()" == message.content.lower():
# retrieve and post all pins again
allPins = await message.channel.pins()
for i in allPins:
# Check if pin is text or a link
mat = i.attachments
if len(mat)==0:
await message.channel.send(i.content)
else:
await message.channel.send(mat[0].url)
以下代码从存在该机器人的所有服务器中检索用户详细信息。我想知道是否应该在第一个代码段中使用公会而不是频道?结果,这给了我一个错误。
if "member_status()" == message.content.lower():
online = 0
idle = 0
offline = 0
print(f"Testing the API with guild.owner: {guild}")
for i in guild.members:
if str(i.status) == "online":
online +=1
elif str(i.status) == "offline":
offline +=1
else:
idle +=1
await message.channel.send(f"```py\ntotal: {guild.member_count} \nonline: {online} \nidle: {idle} \noffline: {offline}```")
答案 0 :(得分:0)
感谢Xay的评论,我得以弄清楚这一点。 您要做的就是使用
检索所有频道message.guild.text_channels
返回所有文本通道的列表。 然后遍历每个通道,并使用
检索每个通道中存在的引脚列表。myPins = await mychannel.pins()
它可能不是最有效的代码,但可以完成工作:) 最后再次进行迭代,以重新发布该通道中的每个引脚。
最终的代码如下:
if "getAllPins()" == message.content.lower():
# get all channels
allChannels = message.guild.text_channels
# go through each channel
for myChannel in allChannels:
# get pins present in this channel
myPins = await mychannel.pins()
# re-post all the pins
for rePin in myPins:
mat = rePin.attachments
if len(mat)==0:
await message.channel.send(rePin.content)
else:
await message.channel.send(mat[0].url)