为了快速设置服务器,我尝试用Python构建一个discord bot,它接受命令“!Create {Category name here}”,然后从存储在变量“textChannelNames”中的字符串列表生成一个包含文本通道的类别。
def run_discord_bot():
TOKEN = "my discord token"
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@commands.command("!Create")
async def addcategory(ctx):
try:
await ctx.guild.create_category(categoryName)
await ctx.send(f"A new category called '{categoryName}' was made")
#Call addTextChannel for every element in the textChannelNames list
for textChannel in textChannelNames:
addTextChannel(ctx, textChannel)
except Exception as e:
print(e)
async def addTextChannel(ctx, channel_name):
try:
guild = ctx.guild
# message that the bot sends
mbed = discord.Embed(
title="Success",
description=f"{channel_name} has successfully been created"
)
if ctx.author.guild_permissions.manage_channels:
await guild.create_text_channel(name='{}'.format(channel_name))
await ctx.send(embed=mbed)
except Exception as e:
print(e)
client.run(TOKEN)
我发现在调试模式下addcategory没有运行,但我不知道为什么。类别和文本通道都没有创建。
1条答案
按热度按时间owfi6suc1#
您使用的是
Client
而不是Bot
,Bot
不支持命令,因此,您的命令完全被discord.py
忽略,因为Client
不知道(或不关心)它们的存在。如果您需要命令,请使用
Commands
框架。https://discordpy.readthedocs.io/en/stable/ext/commands/index.htmlBot
,它也永远不会匹配。该前缀应传递给Bot
的__init__
。*最后,你没有使用
await
函数,所以这对你也没有多大帮助。