通过PHP和卷曲创建不和谐的邀请链接?

时间:2020-10-19 04:27:26

标签: javascript php jquery curl

是否可以通过不和谐的API进行链接并创建邀请链接?我打算将链接存储在数据库中,并且只有特定用户才能基于discord bot创建的唯一1次链接进行加入。我计划将其连接到前端管理面板中,以便我可以跟踪所有链接以及它们属于谁,以及链接是否已被使用。并不是真正地关注发布消息,或者只需要它来创建唯一链接。

1 个答案:

答案 0 :(得分:1)

在尝试自己做时发现了这个问题。这是我想出来的,请随意尝试。

先决条件:

a) 确保您已设置 BOT 并将其邀请到您的服务器。您将需要“BOT_TOKEN”进行身份验证。 (参见:https://codeburst.io/discord-bot-tutorial-2020-a8a2e37e347c)一个不错的教程

b) 您还需要通过打开“开发者选项”,右键单击您的频道并选择“CopyID”(参见:https://www.home-assistant.io/integrations/discord/#:~:text=In%20The%20Discord%20application%20go,channel%20ID%20(Copy%20ID))作为示例来获取您的频道 ID。

注意:我放了一些代码来避免调用 API 太多次,根据需要进行调整。

这是针对“API v6”的

define("INVITE_FILE","/tmp/lastinvite.dat");
define("INVITE_STALE",4500); //seconds
define("BOT_TOKEN","{PASTE YOUR BOT TOKEN HERE}");
define("CHANNEL_ID","{PASTE YOUR CHANNEL ID HERE!}");
function invite_discord($options)
{
//prevent too many messages
$f=file_exists(INVITE_FILE);
if ($f == false) $last=time()-500000;
else $last=@filemtime(INVITE_FILE);
$now=time();
$el=$now - $last;
if ($el < INVITE_STALE)
 {
 return file_get_contents(INVITE_FILE);

} // not last invite
// Replace the URL with your own webhook url
$url = "https://discordapp.com/api/v6/channels/" . CHANNEL_ID . "/invites";

$inviteobj=json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE );
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER,
     array( "Authorization: Bot " . BOT_TOKEN,
            'Content-Type: application/json',
            'Referer: https://discordapp.com/channels/@me'
));

 curl_setopt_array( $ch, [
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $inviteobj]);


$response = curl_exec( $ch );
$works=strpos($response,'{"code":' );
if ($works === false) return "";
file_put_contents(INVITE_FILE,$response);
curl_close( $ch );
return $response;
}

你可以像这样使用这个功能。

$inviteobj = [
    /*
     * How long link should last (0 for forever)
     */
    "max_age" => 0,
    /*
     * The total users that can use the invite (here I use 1)
     */
    "max_uses" => 1,
   ];
$r=invite_discord($inviteobj);
$inviteresp=json_decode($r,true);
$code=$inviteresp["code"];
echo "Invite Code is $code\n";