✨ Add Help command
This commit is contained in:
parent
60f18f2f76
commit
1aa26c836a
19
bot/Bot.php
19
bot/Bot.php
@ -20,6 +20,7 @@ class Bot
|
|||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
public function isValid(Request $request): bool
|
public function isValid(Request $request): bool
|
||||||
{
|
{
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
@ -97,17 +98,25 @@ class Bot
|
|||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sanitizeStringForTalkMessage(string $text): string {
|
|
||||||
return str_replace(['@', 'http://', 'https://'], ['👤', '🔗', '🔗🔒'], $text);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function reply(string $message): void
|
public function reply(string $message): void
|
||||||
{
|
{
|
||||||
$this->sendChatMessage('', $message);
|
$this->sendChatMessage('', $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getConfig()
|
public function getConfig(): array
|
||||||
{
|
{
|
||||||
return $this->config;
|
return $this->config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function listCommands(): \Generator
|
||||||
|
{
|
||||||
|
$commands_folder = __DIR__.DIRECTORY_SEPARATOR.'Commands';
|
||||||
|
foreach (scandir($commands_folder) as $command) {
|
||||||
|
if ($command === '.' || $command === '..' || $command === 'Icommands.php') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$class_name = explode('.', $command)[0];
|
||||||
|
yield sprintf('Shikiryu\Bot\Commands\%s', $class_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
35
bot/Commands/Help.php
Normal file
35
bot/Commands/Help.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Shikiryu\Bot\Commands;
|
||||||
|
|
||||||
|
use Shikiryu\Bot\Bot;
|
||||||
|
|
||||||
|
class Help implements Icommands
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function getMessage(Bot $bot, array $data): void
|
||||||
|
{
|
||||||
|
$message = 'Voici la liste de mes commandes : '."\n";
|
||||||
|
foreach ($bot->listCommands() as $command) {
|
||||||
|
$message .= sprintf(
|
||||||
|
'%s : %s (%s)%s',
|
||||||
|
$command,
|
||||||
|
call_user_func([$command, 'getDescription']),
|
||||||
|
call_user_func([$command, 'getPattern']),
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$bot->replyPolitely($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Affiche les commandes à lancer';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getPattern(): string
|
||||||
|
{
|
||||||
|
return '^(help|aide|liste des commandes)$';
|
||||||
|
}
|
||||||
|
}
|
@ -8,8 +8,7 @@ interface Icommands
|
|||||||
{
|
{
|
||||||
public static function getMessage(Bot $bot, array $data);
|
public static function getMessage(Bot $bot, array $data);
|
||||||
|
|
||||||
/**
|
public static function getDescription(): string;
|
||||||
* @return string
|
|
||||||
*/
|
public static function getPattern(): string;
|
||||||
public static function getDescription();
|
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,13 @@ class Lorem implements Icommands
|
|||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function getDescription()
|
public static function getDescription(): string
|
||||||
{
|
{
|
||||||
return 'Génère du lorem ipsum';
|
return 'Génère du lorem ipsum';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getPattern(): string
|
||||||
|
{
|
||||||
|
return 'lorem( ipsum)?';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,11 @@ class Youtubedl implements Icommands
|
|||||||
return 'Youtubedl wrapper';
|
return 'Youtubedl wrapper';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getPattern(): string
|
||||||
|
{
|
||||||
|
return '(convertis|télécharges?) (https?:\/\/[^\s]+) en (audio|video|vidéo)';
|
||||||
|
}
|
||||||
|
|
||||||
private static function getYoutubeDl(Bot $bot): string
|
private static function getYoutubeDl(Bot $bot): string
|
||||||
{
|
{
|
||||||
$youtubedl_bin = $bot->getConfig()['youtube-dl']['bin'];
|
$youtubedl_bin = $bot->getConfig()['youtube-dl']['bin'];
|
||||||
@ -64,5 +69,4 @@ class Youtubedl implements Icommands
|
|||||||
{
|
{
|
||||||
return $bot->getConfig()['youtube-dl']['download_folder'] ?? __DIR__.'/../../';
|
return $bot->getConfig()['youtube-dl']['download_folder'] ?? __DIR__.'/../../';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Shikiryu\Bot\Bot;
|
use Shikiryu\Bot\Bot;
|
||||||
use Shikiryu\Bot\Commands\Lorem;
|
|
||||||
use Shikiryu\Bot\Commands\Youtubedl;
|
|
||||||
|
|
||||||
|
|
||||||
require 'vendor/autoload.php';
|
require 'vendor/autoload.php';
|
||||||
@ -23,9 +21,9 @@ $event = $_SERVER['HTTP_X_H1_EVENT'] ?? '';
|
|||||||
$signature = $_SERVER['HTTP_X_H1_SIGNATURE'] ?? '';
|
$signature = $_SERVER['HTTP_X_H1_SIGNATURE'] ?? '';
|
||||||
|
|
||||||
// Give the bot something to listen for.
|
// Give the bot something to listen for.
|
||||||
$bot->hears('(convertis|télécharges?) (https?:\/\/[^\s]+) en (audio|video|vidéo)', Youtubedl::class);
|
foreach ($bot->listCommands() as $command) {
|
||||||
|
$bot->hears(call_user_func([$command, 'getPattern']), $command);
|
||||||
$bot->hears('lorem( ipsum)?', Lorem::class);
|
}
|
||||||
|
|
||||||
$bot->hears('(hello|hi|bonjour|salut)', function (Bot $bot) {
|
$bot->hears('(hello|hi|bonjour|salut)', function (Bot $bot) {
|
||||||
$bot->replyPolitely('Bonjour');
|
$bot->replyPolitely('Bonjour');
|
||||||
|
Loading…
Reference in New Issue
Block a user