因此,基本上我有一个简单的“世界聊天”脚本,该脚本使拥有我的漫游器和名为“ world_chat”的频道的人可以在该频道中相互聊天,他们可以接收和发送消息,但是问题是每次他们使用我给出的命令或手动创建了一个频道,他们将能够发送消息,其他人可以看到它,但是直到我在heroku上重置机器人后,他们才能够看到其他人发送的消息,而我真的不知道希望当机器人进入许多服务器时要做的事情很多。
#This is the script that let's people chat to each other
saki_chans=[]
async def get_saki_chans():
for i in client.servers:
for x in i.channels:
if x.type == discord.ChannelType.text and x.name ==
'world_chat' and x.id not in saki_chans:
saki_chans.append(x.id)
print(saki_chans)
@client.event
async def on_message(message):
if message.server and message.channel.name == 'world_chat' and
message.author.id != client.user.id:
for i in saki_chans:
if i == message.channel.id:
pass
else:
emb=discord.Embed(title='',description='{}'.format(message.content),colour
= discord.Color.gold)
emb.set_author(name= message.author.name)
await client.send_message(discord.Object(id=i),embed=emb)
@client.command(pass_context=True)
async def get_wchat(ctx):
servr = ctx.message.server
await client.create_channel(servr, 'world_chat',
type=discord.ChannelType.text)
我希望当有人说'(prefix)create_wchat'时,它会创建一个名为'world_chat'的频道,但是我不必重启机器人或脚本来使该人接收别人发送的消息。
答案 0 :(得分:0)
每次创建一个全局频道列表时,您都必须在await get_saki_chans()
命令中调用get_wchat
。
当前,您在启动时只调用一次,因此这就是为什么您必须重新启动机器人的原因。
但是,建议您不要监听on_channel_create
,on_channel_delete
和on_channel_update
事件,而是建议创建一个名为#world_chat
的频道,而不是要求用户调用特定命令。 ,或将现有名称重命名为该名称;使其成为world_chat频道。
类似地,您将避免保留不再命名为#world_chat
或已删除的频道。