如何使用Discord.py Bot锁定频道
我需要的是一个机器人,可以锁定一个简单的命令通道。例如,当有人说锁定时,机器人会打开“无消息发送”。以下是我目前掌握的情况:如何使用Discord.py Bot锁定频道,discord.py,Discord.py,我需要的是一个机器人,可以锁定一个简单的命令通道。例如,当有人说锁定时,机器人会打开“无消息发送”。以下是我目前掌握的情况: @commands.has_permissions(manage_channels=True) async def lockdown(self, ctx, message, channel, member): if message.author.id == 767435817034842172 and message.content.startsw
@commands.has_permissions(manage_channels=True)
async def lockdown(self, ctx, message, channel, member):
if message.author.id == 767435817034842172 and message.content.startswith('Lock Channel Test'):
overwrite = discord.PermissionOverwrite()
overwrite.send_messages = False
overwrite.read_messages = True
await channel.set_permissions(member, overwrite=overwrite)
await message.channel.send('**Channel Locked.**\n\n**Reason:** Guild Save Used\n`Please Wait For An Admin/Moderator To Unlock This Channel`')
当我这样做的时候,各种各样的错误都会出现。(我不熟悉编码)
有人能帮我吗?到目前为止,我所发现的只是一些示例,它们只显示了问题的一个部分,没有说明如何对其附加命令。请向我展示整个过程,包括如何使其响应玩家命令以及导入所需的内容。非常感谢 我发现您是新手,不知道如何创建命令。嗯,我的建议是,当你还是新手的时候,你应该做这样的大项目,因为它们可能会让你感到困惑,使你偏离语言。相反,我们应该从简单的项目开始,比如掷骰子游戏或计算器 但是,现在既然您已经开始了,让我先向您展示如何创建一个机器人。因此,我将告诉您如何使用命令API创建discord机器人 我们将讨论如何为您的机器人创建前缀,因为您可能与之交互的大多数机器人都有某种形式的前缀
(例如$or!)
。之后,我们将介绍如何创建新命令。最后,我们将检查内置的help命令,查看bot拥有的命令列表,这样您就不必创建自己的命令
正在创建机器人的前缀。
我从零开始,但是如果你已经有了一个包含其他代码的文件,你可以使用它。
因此,我创建了一个文件并添加了代码:
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='!')
bot.run("YOU MAY ENTER YOUR BOT'S TOKEN HERE")
您需要关注以下行:bot=command.bot(command_prefix='!')
,因为它在代码中非常重要。我假设您一直在使用discord.Client来运行bot,但现在是升级和改进bot的时候了
定义机器人的命令。
现在我们已经为我们制作了一个Bot
对象,我们可以继续为我们的Bot制作一些命令。命令API
命令的清晰和可爱之处在于,它们的顶部只有一个装饰器,因此我们可以轻松地对它们进行抽象
让我们为我们做一个简单的ping-pong
命令,以便您能够理解它们
@bot.command()
async def ping(ctx):
await ctx.channel.send("pong...")
首先,请注意我们是如何在函数顶部添加decorator的,@bot.command()
bot
是我们上面定义的变量的名称,command()
让bot知道这是一个特定的命令
因此,现在转到机器人可以发送消息的任意通道,然后使用命令!ping
和bot将发送一条消息pong…
。你可以试试
允许您的机器人是接受参数。
现在我们已经为bot制作了一个简单的命令,如果我们想要一个由用户调用的命令应该包含一个参数,该怎么办?例如,如果要ping服务器上的某个人,该怎么办?这很简单,可以用很多不同的方法来实现。我们将讨论最简单的一个
@bot.command()
async def print(ctx, arg):
await ctx.channel.send(arg)
它能做什么?因此,当用户执行命令时,例如:!打印苹果 BOT将在命令中考虑“代码>苹果Apple或代码>代码> ARG<代码>,然后在命令执行的通道中发送它。
如果要添加多个参数,该怎么办?然后呢?这也很简单。这可以通过将函数的定义行更改为:
async def print(ctx, *, arg):
现在一切都在之后!打印
命令将被视为arg
,并将被显示
使用内置的帮助命令。
我们已经基本上涵盖了开发机器人所需的一切,但还有一件事需要强调。现在我将提到包的预构建帮助命令
正如您所看到的,除了,现在看不到任何关于命令的文本,而帮助
有一个。现在,我们将允许您为命令添加文本,这可以使用command()
discrminator中的一些属性来完成
@bot.command(
help="Uses come crazy logic to determine if pong is actually the correct value or not.",
brief="Prints pong back to the channel."
)
async def ping(ctx):
await ctx.channel.send("pong")
@bot.command(
help="Looks like you need some help.",
brief="Prints the list of values back to the channel."
)
async def print(ctx, *, arg):
await ctx.channel.send(arg)
现在,这将把我们需要的文本添加到bot的help
命令中。在这里,当所有命令都在bot消息中可见时,摘要
充当命令的快速显示文本
以下是执行的情况:
关于命令API
,您真正需要知道的就是这些。您可以在其他各种网站上了解更多信息。我将在下面添加它们的链接
- 参考-
可用于在discord.py
中学习命令API
的站点:
- discordpy.readthedocs.io-
- betterprogramming.pub-参考链接
- realpython.com-
希望我能让你明白。如有任何疑问,请在评论中询问。:)
谢谢有什么错误?非常感谢!由于某些原因,在您向我展示之前,我无法获得异步def(ctx)部分!非常感谢。@Coder999非常欢迎您我介意接受这个答案,因为它帮助了你D