如何制作不狙击跨服务器的狙击命令(discord.py)

Posted

技术标签:

【中文标题】如何制作不狙击跨服务器的狙击命令(discord.py)【英文标题】:How can I make a snipe command that doesn't snipe cross server (discord.py) 【发布时间】:2021-10-26 19:31:16 【问题描述】:

我正在尝试使用 discord.py 在 python 中创建一个命令,这是您的标准狙击命令,但我在网上看到的所有执行此操作的方法都有一个问题。它们都有一个全局狙击变量,例如,如果我进入服务器 A 并键入“hello”然后删除该消息然后转到服务器 B 并键入狙击命令,它会说最后一条消息是“hello”。有没有简单的方法来解决这个问题? 编辑 - 让它工作! (不知何故)感谢任何帮助过的人

【问题讨论】:

可能是一个将公会 ID 映射到某个对象的字典。每当您调用该命令时,您都会查找ctx.guild.id,然后对该对象而不是全局变量进行操作。 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

只需添加一个处理程序。

这样做。

contentguild = self.last_msg.guild
guild = ctx.guild

做一个 if 语句:

if contentguild.id != guild.id:
        await ctx.reply("There is no message to snipe!", 
                         mention_author=False)
        return

我假设您已经设置了 snipe 命令,因此使用这些代码应该能够使其正常工作。如果你真的有问题对这个消息做出反应,我可以给你狙击命令的整个代码,但我希望你先自己尝试一下。 ;-)

【讨论】:

嘿!感谢您的帮助,但我在一天的大部分时间里都在努力让这项工作正常进行。我已经尝试了几乎所有我能想到的东西,但我仍然无法让它发挥作用!您能提供更多帮助吗? 你在用齿轮吗? 是的,但我得到了它的工作。感谢您的帮助! 你能把我的答案标记为给你答案的那个吗?我将不胜感激。

以上是关于如何制作不狙击跨服务器的狙击命令(discord.py)的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py 狙击命令

狙击命令没有提到用户

Discord.js - 无法读取 execute() 方法中未定义的属性

2020.3.30生死狙击正式退游纪念

《使命召唤Online》新版本更新,“致命狙击”上线

text 弹性狙击手