国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP Discord獲取頻道消息功能實現(xiàn)

這篇具有很好參考價值的文章主要介紹了PHP Discord獲取頻道消息功能實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 關(guān)注對應(yīng)頻道

首先要創(chuàng)建自己的頻道, 然后到對應(yīng)的公告頻道中關(guān)注這個頻道(這時 Discord 會讓你選擇頻道, 選擇之前創(chuàng)建的頻道就可以了)

2. 添加機器人

https://discord.com/developers/applications
Discord 開發(fā)者地址, 然后創(chuàng)建一個自己的機器人即可
PHP Discord獲取頻道消息功能實現(xiàn),Laravel,PHP,php,laravel

3. 配置機器人權(quán)限

進入設(shè)置后 選擇 OAuth2 然后 選擇第一個子選項
如圖: 選擇 bot , Administrator
PHP Discord獲取頻道消息功能實現(xiàn),Laravel,PHP,php,laravel
選擇 Bot ,上傳頭像,填寫名稱
PHP Discord獲取頻道消息功能實現(xiàn),Laravel,PHP,php,laravel
配置機器人
下面 MESSAGE CONTENT INTENT (重點沒有選擇的話,后面獲取內(nèi)容都是空的)PHP Discord獲取頻道消息功能實現(xiàn),Laravel,PHP,php,laravel

4. 使用 DiscordPHP 類庫

文檔地址 https://packagist.org/packages/team-reflex/discord-php
按照類庫 composer require team-reflex/discord-php

5. 代碼示例 (Laravel 框架)

先在自己的頻道發(fā)消息, 然后在日志中查看 $message->content 如果為空 (看第三步配置)

<?php
/**
 * Discord
 */

use App\Models\DiscordMessage;
use Discord\Discord;
use Discord\Exceptions\IntentException;
use Discord\Parts\Channel\Message;

class DiscordUtils
{
    // 配置
    public $config = [
        'token' => 'xxx',
    ];
    // 頻道ID
    public $channelId = 'xxx';
    // 官方ID
    public $userId = 'xxx';

    /**
     * @throws IntentException
     */
    public function __construct()
    {
        $this->init();
    }

    /**
     * 初始化
     * @throws IntentException
     */
    public function init()
    {
        $discord = new Discord($this->config);
        $discord->on('ready', function (Discord $discord) {
            logger("Bot is ready!");
            $discord->on('message', function (Message $message, Discord $discord) {
                // 在這里處理收到的消息 
                logger("Received Message :" . $message->content);
                // 這里判斷只記錄 公告頻道的官方發(fā)布的消息
                // 指定頻道的
                $channel = $message->channel_id === $this->channelId;
                // 指定官方
//                $official = $message->user_id == $this->userId;
                // 消息ID 不為空, 是指定頻道, 消息ID是不存在的
                if ($channel) {
                    $data = [
                        'message_id' => $message->id,
                        'channel_id' => $message->channel_id,
                        'user_id' => $message->user_id,
                        'username' => $message->author->username,
                        'content_en' => $message->content,
                        'content' => $message->content,
                        'timestamp' => $message->timestamp->toDateTimeString(),
                    ];
                    logger('write: ', $data);
                    $this->write($data);
                }
            });
        });
        $discord->run();
    }

    /**
     * @param $data
     */
    public function write($data)
    {
        try {
            if (!DiscordMessage::query()->where('message_id', $data['message_id'])->exists()) {
                logger('寫入: ', $data);
                DiscordMessage::query()->insertGetId($data);
            } else {
                // 重復(fù)寫入
                logger('Repeat Write Records');
            }
        } catch (\Exception $e) {
            logger('write error');
        }
    }
}

6. 服務(wù)器部署

這里建議使用 進程守護 保持這個命令執(zhí)行后的進程一直都在
然后在 進程守護 中去管理和重啟這個命令(業(yè)務(wù)邏輯發(fā)生修改后需要重啟)
注意: 這里不適合使用定時器, 這樣會導(dǎo)致服務(wù)器或者數(shù)據(jù)庫壓力巨大,從而導(dǎo)致宕機文章來源地址http://www.zghlxwxcb.cn/news/detail-727228.html

<?php

namespace App\Console\Commands;

use App\Library\Api\DiscordUtils;
use Illuminate\Console\Command;

class GetDiscordMessage extends Command
{
    /**
     * php artisan discord:message >> /dev/null 2>&1
     * php artisan discord:message --option -d
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'discord:message';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '獲取Discord消息';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     */
    public function handle()
    {
        logger('執(zhí)行 - 獲取Discord消息');
        new DiscordUtils();
    }
}

到了這里,關(guān)于PHP Discord獲取頻道消息功能實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • PHP實踐:Laravel中事件使用講解

    PHP實踐:Laravel中事件使用講解

    ??作者簡介,黑夜開發(fā)者,CSDN領(lǐng)軍人物,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者?,CSDN博客專家,阿里云社區(qū)專家博主,2023年6月CSDN上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經(jīng)驗,歷任核心研發(fā)工程師,項目技術(shù)負責(zé)人。 ??本文已收錄于PHP專欄:PHP面試專區(qū),PHP進階實戰(zhàn)教程。。 ??歡迎 ??點

    2024年02月22日
    瀏覽(36)
  • PHP的Laravel的數(shù)據(jù)庫遷移

    PHP的Laravel的數(shù)據(jù)庫遷移

    在終端輸入以下代碼 php artisan migrate 我的報錯啦?。。。?! 數(shù)據(jù)庫里面只有兩張表,實際上應(yīng)該有四張的?。。?反正表已經(jīng)遷移完成了,就把遷移完成的表的內(nèi)容注釋掉,接著執(zhí)行php artisan migrate,得到下一個表的內(nèi)容。 然后依次類推直至所有表都創(chuàng)建完成?。?! 當(dāng)然啦!

    2024年02月04日
    瀏覽(27)
  • PHP Laravel 路由、中間件、數(shù)據(jù)庫等例子

    以下是使用Laravel框架時的一些常見示例: 1. 路由(Routes): // 定義基本路由 Route::get(\\\'/home\\\', \\\'HomeController@index\\\'); // 帶有參數(shù)的路由 Route::get(\\\'/user/{id}\\\', \\\'UserController@show\\\'); // 路由組 Route::middleware([\\\'auth\\\'])-group(function () { ? ? Route::get(\\\'/dashboard\\\', \\\'DashboardController@index\\\'); ? ? Route::pos

    2024年02月16日
    瀏覽(37)
  • 學(xué)習(xí)路之PHP--laravel postman 提交表單出現(xiàn)419錯誤

    學(xué)習(xí)路之PHP--laravel postman 提交表單出現(xiàn)419錯誤

    問題圖片 解決: 白名單 有時候你可能希望設(shè)置一組不需要 CSRF 保護的 URL 。例如,如果你正在使用 Stripe 處理付款并使用了他們的 webhook 系統(tǒng),你會需要從 CSRF 的保護中排除 Stripe webhook 處理程序路由,因為 Stripe 不知道要發(fā)送什么樣的 CSRF 令牌到你的路由。 通常,你應(yīng)該把

    2024年01月19日
    瀏覽(34)
  • larvel 中的api.php_Laravel 開發(fā) API

    Laravel10中提示了Target *classController does not exist,為什么呢? 原因是:laravel8開始寫法變了。換成了新的寫法了 解決方法一: 在路由數(shù)組加入 AppHttpControllers 即可。 再次訪問URL,搞定。 解決方法二: 打開 appProvidersRouteServiceProvider.php 修改,添加一個namespace變量

    2024年02月06日
    瀏覽(35)
  • 醫(yī)療安全不良事件管理系統(tǒng)源碼(PHP+ vue+laravel)

    醫(yī)療安全不良事件管理系統(tǒng)源碼(PHP+ vue+laravel)

    醫(yī)療安全不良事件管理系統(tǒng)全套源碼 不良事件上報系統(tǒng)源碼 不良事件 管理系統(tǒng) 幫助醫(yī)院梳理建立不良事件上報與管理的一體化解決方案,包含上報內(nèi)容、歸口科室、上報流程及管理辦法。提供面向醫(yī)院的不良事件全過程管理平臺,包含事件上報、事件處理、事件追蹤、RC

    2024年02月06日
    瀏覽(29)
  • PHP使用Redis實戰(zhàn)實錄5:Redis實現(xiàn)消息隊列

    PHP使用Redis實戰(zhàn)實錄系列 PHP使用Redis實戰(zhàn)實錄1:寶塔環(huán)境搭建、6379端口配置、Redis服務(wù)啟動失敗解決方案 PHP使用Redis實戰(zhàn)實錄2:Redis擴展方法和PHP連接Redis的多種方案 PHP使用Redis實戰(zhàn)實錄3:數(shù)據(jù)類型比較、大小限制和性能擴展 PHP使用Redis實戰(zhàn)實錄4:單例模式和面向過程操作

    2024年02月11日
    瀏覽(21)
  • docker容器下php框架laravel的使用問題與解決方案

    docker容器下php框架laravel的使用問題與解決方案

    DB_CONNECTION=mysql DB_HOST=localhost DB_CONNECTION=mysql DB_HOST=docker33-mysql-1 容器中只有數(shù)據(jù)庫結(jié)構(gòu) 進入MySQL容器內(nèi),創(chuàng)建表結(jié)構(gòu),添加數(shù)據(jù) 代碼層面需要轉(zhuǎn)換成數(shù)組 $query - get ( [\\\'*\\\'] )- toArray () ; 分頁數(shù)據(jù)框架會返回帶有data的數(shù)據(jù),如果循環(huán)記得加上

    2024年01月23日
    瀏覽(35)
  • 甘特圖控件DHTMLX Gantt教程:dhtmlxGantt 與PHP: Laravel(下)

    DHTMLX Gantt是用于跨瀏覽器和跨平臺應(yīng)用程序的功能齊全的Gantt圖表。可滿足項目管理應(yīng)用程序的大部分開發(fā)需求,具備完善的甘特圖圖表庫,功能強大,價格便宜,提供豐富而靈活的JavaScript API接口,與各種服務(wù)器端技術(shù)(PHP,ASP.NET,Java等)簡單集成,滿足多種定制開發(fā)需求

    2024年02月06日
    瀏覽(51)
  • DNMP一鍵部署PHP8.2和Laravel10的Docker環(huán)境

    DNMP一鍵部署PHP8.2和Laravel10的Docker環(huán)境

    服務(wù)器環(huán)境 所有命令皆在root用戶下運行 VMware虛擬機下的ubuntu22.04 docker24.0.7 docker-compose 2.6.1 yeszao/dnmp開源倉庫 倉庫地址: https://gitee.com/yeszao/dnmp 本文章只提供整個部署的過程,對docker、dockerFile以及docker-compse的知識最好有初步的認識,才能更好的理解 ① 首先在/www文件夾拉取

    2024年01月20日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包