我正在使用discord.py和asyncio制作discord机器人。该机器人具有类似kick和的命令,而ban这些命令显然对普通用户不可用。
我想创建一个简单的系统,该系统将检测用户角色所使用的权限ctx.message.author以获取发送命令的用户。
我不希望该漫游器检测到特定的角色名称,因为这些名称在服务器之间会有所不同。我还希望该机器人没有多个文件,以使其简单。
我看过discord.py文档和其他各种资源,但没有一个包含如何实现他们所讨论的各种方法的示例。
例如,这是我的机器人发出的单个命令:
async def kick(ctx, userName: discord.User):
if True: #ctx.message.author.Permissions.administrator
await BSL.kick(userName)
else:
permission_error = str('Sorry ' + ctx.message.author + ' you do not have permissions to do that!')
await BSL.send_message(ctx.message.channel, permission_error)
Run Code Online (Sandbox Code Playgroud)
该if else声明是我自己尝试执行的操作。将#ctx.message.author.Permissions.administrator被注释掉,因为它不工作,取而代之的True用于测试目的。
感谢您的任何帮助和建议。
我知道可以将可执行文件嵌入到 Golang 可执行文件中并运行它们,或者使用Yaegi等项目从字符串运行 Golang 代码,但是是否可以运行存储为变量的二进制文件而不将其写入文件,作为子项过程?二进制文件已经作为变量存在于内存中,因此是否可以以某种方式执行它?
如果我没有记错的话,可执行内存和数据内存之间存在差异,那么这会阻止执行此操作吗?
我的问题的原因是我正在编写一个 RAT/payload dropper 作为学习 Go(lang) 的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也是无文件)有效负载。
编辑:欢迎任何解决方案,但跨平台解决方案是首选。
EDIT2:根据这个SO答案,这在C++中是不可能/非常困难的。看来,造成这种情况的主要原因是动态链接库。由于 Golang 是静态链接的,这会更容易吗?
在Python3中,是否可以将PIL/PillowImage对象转换为data:image/pngURL,以便在粘贴到浏览器地址栏中时出现图像?
到目前为止我的尝试都失败了:
"data:image/png,{}".format(image_obj.tobytes())
Run Code Online (Sandbox Code Playgroud)
或者,是否有其他好方法将图像从 Python 脚本发送到远程用户?图像托管网站会很好,但通常很昂贵/没有 Python API/需要注册和登录。目前我打算使用像 Pastebin 这样的服务以文本形式存储图像,然后简单地将 URL 发送给用户。
在制作了一个通过multipart/x-mixed-replace Content-Type标头将 PNG 图像流式传输到浏览器的程序后,我注意到标签中只显示最后一帧<img>,而不是最近发送的帧。
这种行为非常烦人,因为我只在图像更改时发送更新以节省带宽,这意味着当我等待更新时,屏幕上将显示错误的帧。
具体来说,我使用的是 Brave 浏览器(基于 chromium),但由于我尝试了上下“屏蔽”,我认为这个问题至少也出现在其他基于 chromium 的浏览器中。
搜索问题只会产生一个相关结果(以及许多不相关的结果),即HowToForge线程,没有回复。同样,我也认为问题与缓冲有关,但我确保刷新缓冲区无济于事,这与线程中的用户非常相似。用户确实报告说它可以在他们的一台服务器上运行,但不能在另一台服务器上运行,这让我相信它可能与特定的 HTTP 标头或类似的东西有关。我的第一个猜测是Content-Length因为浏览器可以判断图像何时完整,但它似乎没有任何效果。
所以本质上,我的问题是:有没有办法告诉浏览器显示最新的multipart/x-mixed-replace而不是之前的?而且,如果这不是标准行为,原因可能是什么?
当然,这是相关的源代码,尽管我认为这更多的是一个一般的 HTTP 问题,而不是与代码有关的问题:
package routes
import (
"crypto/md5"
"fmt"
"image/color"
"net/http"
"time"
brain "path/to/image/generator/module"
)
func init() {
RouteHandler{
function: func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "multipart/x-mixed-replace; boundary=frame")
w.Header().Set("Cache-Control", "no-cache") // <- Just in case
w.WriteHeader(200)
// If the request contains a token and the token maps to a valid "brain", start consuming …Run Code Online (Sandbox Code Playgroud) go ×2
python-3.x ×2
discord ×1
discord.py ×1
exec ×1
executable ×1
http ×1
image ×1
javascript ×1
memory ×1
python ×1