如何获取频道名称,以便该漫游器可以在其所安装的任何服务器上运行而无需更改代码? (在我放置“我在这里放什么”的代码中,是我希望名称包含在变量中的位置)谢谢
from discord.ext.commands import Bot
import time, asyncio
TOKEN = 'Its a secret'
BOT_PREFIX = ["!"]
client = Bot(command_prefix=BOT_PREFIX)
@client.event
async def on_message(message):
if message.author == client.user:
return
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
await start()
while True:
currentTime = time.strftime("%M%S", time.gmtime(time.time()))
if currentTime == "30:00":
await start()
await asyncio.sleep(1)
async def start():
mainChannel = #What do i put here?
print(mainChannel.name)
await client.send_message(mainChannel, "Starting countdown", tts = True)
client.run(TOKEN)
答案 0 :(得分:6)
现在重写中有一种名为discord.utils.get的方法,您可以在其中实际获取具有特定参数的不和谐对象
在您的情况下,使用频道名称:
import discord
channel = discord.utils.get(guild.text_channels, name="Name of channel")
如果discord无法找到具有该名称的文本通道,则应该为无
答案 1 :(得分:1)
从ID获取频道
首先,您需要获取频道ID 您可以通过右键单击频道并选择“复制ID”来完成此操作
第二,您需要将ID放在以下代码中:
client.get_channel("ID")
一个例子是:
client.get_channel("182583972662")
从名称获取频道
首先,从以下任一服务器获取服务器:
server = client.get_server("ID")
OR
for server in client.servers:
if server.name == "Server name":
break
第二,获取频道
for channel in server.channels:
if channel.name == "Channel name":
break
答案 2 :(得分:1)
其实很简单:
你可以简单地做message.channel.name
示例:
print(message.channel.name)