PHP Discord获取频道消息功能实现

PHP Discord获取频道消息功能实现

  • 1. 关注对应频道
  • 2. 添加机器人
  • 3. 配置机器人权限
  • 4. 使用 `DiscordPHP` 类库
  • 5. 代码示例 (Laravel 框架)
  • 6. 服务器部署

1. 关注对应频道

首先要创建自己的频道, 然后到对应的公告频道中关注这个频道(这时 Discord 会让你选择频道, 选择之前创建的频道就可以了)

2. 添加机器人

https://discord.com/developers/applications
Discord 开发者地址, 然后创建一个自己的机器人即可
在这里插入图片描述

3. 配置机器人权限

进入设置后 选择 OAuth2 然后 选择第一个子选项
如图: 选择 bot , Administrator
在这里插入图片描述
选择 Bot ,上传头像,填写名称
在这里插入图片描述
配置机器人
下面 MESSAGE CONTENT INTENT (重点没有选择的话,后面获取内容都是空的)在这里插入图片描述

4. 使用 DiscordPHP 类库

文档地址 https://packagist.org/packages/team-reflex/discord-php
按照类库 composer require team-reflex/discord-php

5. 代码示例 (Laravel 框架)

先在自己的频道发消息, 然后在日志中查看 $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',];// 频道IDpublic $channelId = 'xxx';// 官方IDpublic $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);// 这里判断只记录 公告频道的官方发布的消息// 指定频道的$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 {// 重复写入logger('Repeat Write Records');}} catch (\Exception $e) {logger('write error');}}
}

6. 服务器部署

命令只执行一次即可, 因为这是一个 Websocket (不要用定时任务, 否则请求过高会要求更换Token)

<?phpnamespace 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('执行 - 获取Discord消息');new DiscordUtils();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链游戏的开发框架

链游&#xff08;Blockchain Games&#xff09;是基于区块链技术构建的游戏。它们与传统游戏有一些显著不同之处&#xff0c;因此需要特定的开发框架和工具。以下是一些用于链游开发的开发框架及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专…

基于STM32_DS18B20单总线传感器驱动

基于STM32_DS18B20单总线传感器驱动 文章目录 基于STM32_DS18B20单总线传感器驱动前言一、BS18B20&#xff1f;二、原理1.复位与检验2.基本命令3.唯一ROM识别码4.温度转换 三、驱动代码四、注意事项 前言 本文以一款典型的单总线传感器及其驱动——DS18B20为例&#xff0c;简单…

《UnityShader入门精要》学习2

UnityShader 基础 UnityShader 概述 一对好兄弟&#xff1a;材质和UnityShader 总体来说&#xff0c;在Unity中我们需要配合使用材质&#xff08;Material&#xff09;和Unity Shader才能达到需要的效果。一个最常见的流程是&#xff1a; &#xff08;1&#xff09;创建一个…

(5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求

SpringMVC处理Ajax 参考文章数据交换的常见格式,如JSON格式和XML格式 请求参数的携带方式 浏览器发送到服务器的请求参数有namevalue&...(键值对)和{key:value,...}(json对象)两种格式 URL请求和表单的GET请求会将请求参数以键值对的格式拼接到请求地址后面form表单的P…

【深度学习】UniControl 一个统一的扩散模型用于可控的野外视觉生成

论文&#xff1a;https://arxiv.org/abs/2305.11147 代码&#xff1a;https://github.com/salesforce/UniControl#data-preparation docker快速部署&#xff1a;https://qq742971636.blog.csdn.net/article/details/133129146 文章目录 AbstractIntroductionRelated WorksUniCo…

【Linux】HTTPS协议

文章目录 &#x1f4d6; 前言1. 引入https协议2. 常见的加密方式2.1 对称加密&#xff1a;2.2 非对称加密&#xff1a;2.3 数据摘要&&数据指纹&#xff1a; 3. 对加密方式的探究3.1 只使用对称加密&#xff1a;3.2 只使用非对称加密&#xff1a;3.3 双方都使用非对称加…

SQL和Python,哪个更容易自学?哪个更适合数据工作的编程新手?

如果你想从事数据工作&#xff0c;比如数据分析、数据开发、数据科学等&#xff0c;你可能会遇到这样的问题&#xff1a;SQL和Python哪个更容易自学&#xff1f;哪个更有用&#xff1f;哪个更有前途&#xff1f;其实这两种语言都是数据工作的重要技能&#xff0c;但它们的特点和…

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度(matlab代码)

目录 1 主要内容 系统结构 CCPP-P2G-燃气机组子系统 非线性处理缺陷 2 部分代码 3 程序结果 4 程序链接 1 主要内容 该程序参考《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》模型&#xff0c;主要实现的是计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度…

智能井盖传感器:提升城市安全与便利的利器

在智能化城市建设的浪潮中&#xff0c;WITBEE万宾智能井盖传感器&#xff0c;正以其卓越的性能和创新的科技&#xff0c;吸引着越来越多的关注。本文小编将为大家详细介绍这款产品的独特优势和广阔应用前景。 在我们生活的城市中&#xff0c;井盖可能是一个最不起眼的存在。然而…

通过动态IP解决网络数据采集问题

前言 网络数据采集是目前互联网上非常重要且广泛应用的技术之一&#xff0c;它可以帮助我们获取互联网上各种类型的数据&#xff0c;并将其转化为可用的信息。然而&#xff0c;一些网站为了保护其数据被滥用&#xff0c;采取了一系列的限制措施&#xff0c;其中包括对访问者的…

各类高危漏洞介绍及验证方式教程(一)

本期整理的漏洞验证教程约包含50多类漏洞&#xff0c;分多个章节编写&#xff0c;可从以下链接获取全文&#xff1a; 各类高危漏洞验证方式.docx (访问密码: 1455) 搭建dvwa测试环境基础教程.docx(访问密码: 1455) web逻辑漏洞挖掘快速入门基础教程.docx(访问密码: 1455) 01 Ca…

WPF向Avalonia迁移(三、项目结构)

前提&#xff1a; Avalonia版本11.0.0 1.配置文件 1.1 添加配置文件 1.2 读取配置文件 添加System.Configuration.ConfigurationManager using Avalonia.Controls; using System.Configuration;namespace AvaloniaApplication7.Views {public partial class MainWindow : W…

如何使用Net2FTP搭建免费web文件管理器打造个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

H3C交换机的40G堆叠线 ,可以插在普通光口做堆叠吗?

环境&#xff1a; S6520X-24ST-SI交换机 H3C LSWM1QSTK2万兆40G堆叠线QSFP 问题描述&#xff1a; H3C交换机的40G堆叠线 &#xff0c;可以插在普通光口做堆叠吗&#xff1f; 解答&#xff1a; 1.H3C交换机的40G堆叠线通常是用于连接堆叠模块或堆叠端口的。这些堆叠线通常使…

【技术干货】如何快速创建商用照明 OEM APP?

本文介绍了如何在涂鸦 IoT 平台的 App 工作台上创建一款体验版商照 App、正式版 OEM App、上架 App、以及完成通用配置。 OEM App 开发 创建 App 登录 涂鸦 IoT 平台的 App 页面。 单击 创建APP&#xff0c;选择 商照 APP 进行创建。 在提示框里&#xff0c;完善 App 信息…

通过Node.js获取高德的省市区数据并插入数据库

通过Node.js获取高德的省市区数据并插入数据库 1 创建秘钥1.1 登录高德地图开放平台1.2 创建应用1.3 绑定服务创建秘钥 2 获取数据并插入2.1 创建数据库连接工具2.2 请求数据2.3 数据处理2.4 全部代码 3 还可以打印文件到本地 1 创建秘钥 1.1 登录高德地图开放平台 打开开放平…

11面向对象编程例子 月饼可以访问模子 模子不能访问月饼

类就好比是一个模子&#xff0c;然后各种对象就是月饼&#xff0c;印的月饼太多了&#xff0c;于是找不到月饼了&#xff0c;但是月饼只有一个模子&#xff0c;所以可以向上找到自己的模子 先上代码&#xff1a; class Person:age 0def shilifangfa(self):print(self)print(…

多列等高实现

预期效果 多列等高,左右两列高度自适应且一样,分别设置不同背景色效果预览: 分别由6种方法实现 1、使用padding + margin + overflow 实现多列等高效果,具有良好的兼容性; 2、border实现多列等高,左边框宽度为200px,左列浮动,伪元素清除浮动; 3、父元素线性渐变背景色…

基于web的酒店客房管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 会员信息管理 客房信息管理 收藏客房管理 用户入住管理 客房清扫管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施…

【数据结构】算法效率的度量方法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f38f;事后统计方法 &#x1f38f;事前分析估算方法 &#x1f38f;函数的渐进式增长 结语 在上篇文章中我们提到了算法的设计要求中我们要尽量满足时间效率高…