是否可以通过Indy的TIdHTTP
组件在Discord中授权机器人?
有一个向客户端发送消息的很好的例子,但不清楚如何为机器人输入令牌。
params: TStringStream;
begin
params := TStringStream.Create('{"content": "Test", "username": "testname", "avatar_url": "https://i.imgur.com/ivUiaOr.png"}', TEncoding.UTF8);
try
httpclient1.Request.ContentType := 'application/json';
httpclient1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
httpclient1.Post('https://discordapp.com/api/webhooks/443763508073594880/r8Oba0ws7WeN-n57TeF6BF6CKFFjviov6XMrMVVDUY_G18zmmY7VUwZqCiAOs9nz-CyC', params);
finally
params.Free;
end;
字符串
2条答案
按热度按时间ruoxqz4g1#
这是可能的,我已经做了它之前使用休息组件。
你需要通过一个auth头来传递bot令牌,如discord文档中所述。
因此,您需要做的就是在发布之前将其添加到IdHTTP报头中。
字符串
使用Rest组件而不是indy我已经为你做了一个要点,我每天使用这些代码来发送消息给不和谐。Send Message to discord using
TRestClient
重要
discord机器人必须至少连接到websocket gateway一次。如果你最近刚刚创建了一个bot应用程序,而令牌还没有被用来将bot连接到网关,那么在你这样做之前,它不会接受任何API请求。
你还需要一个机器人的用户代理。不提供一个也会让他们拒绝API请求。
qcuzuvrc2#
我试着发送消息,没有错误...我做错了什么(很抱歉,我用C++Builder编写,但它们的语法相同):
字符串