【问题标题】:creating a discord invite link via php and curl?通过 php 和 curl 创建一个不和谐的邀请链接?
【发布时间】:2021-02-01 20:47:06
【问题描述】:

有没有办法通过 discord API 链接并创建邀请链接?我计划将链接存储在数据库中,并且只有特定用户才能根据不和谐机器人创建的唯一 1 时间链接加入。我计划将它连接到前端管理面板中,这样我就可以跟踪所有链接以及它们属于谁以及链接是否已被使用。不是真正考虑发布消息或类似的内容,只是需要它来创建独特的链接。

【问题讨论】:

  • 请添加一些演示代码。

标签: javascript php jquery curl


【解决方案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";

【讨论】:

    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 2023-04-03
    • 2022-01-21
    • 2018-08-28
    • 2021-09-13
    • 1970-01-01
    • 2021-12-17
    • 2021-04-22
    相关资源
    最近更新 更多