Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Discord.py Bot锁定频道_Discord.py - Fatal编程技术网

如何使用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