fix typo
This commit is contained in:
parent
065320ccf4
commit
453604e164
4 changed files with 23 additions and 23 deletions
10
README.md
10
README.md
|
@ -1,7 +1,7 @@
|
|||
# matter_bot
|
||||
Au début, `matter_bot` devait être un bot qui fait le pont entre Discord et Mattermost.
|
||||
Malheureusement, je n'ai pas réussi a recevoir les messages depuis Mattermost...
|
||||
MAIS, tout ce qui est du côté de Discord devrait fonctionné proprement.
|
||||
Malheureusement, je n'ai pas réussi à recevoir les messages depuis Mattermost...
|
||||
MAIS, tout ce qui est du côté de Discord devrait fonctionner proprement.
|
||||
|
||||
J'ai laissé tout ce que j'ai commencé pour Mattermost, il faut donc quand-même renseigner
|
||||
les variables demandés ci-dessous pour pouvoir lancer le bot.
|
||||
|
@ -29,7 +29,7 @@ PREFIX=votre_prefix_ici # commun aux deux bots, par défaut: ç
|
|||
|
||||
#### Mattermost
|
||||
Dans le cas ou vous optez pour le token, vous devez ajouter un bot, pour ce faire (d'après la [documentation officielle](https://developers.mattermost.com/integrate/admin-guide/admin-bot-accounts/)) :
|
||||
- Cliquez sur les 9 carrés en haut a gauche
|
||||
- Cliquez sur les 9 carrés en haut à gauche
|
||||
- Integrations
|
||||
- Bot Accounts
|
||||
- Add Bot Account
|
||||
|
@ -68,7 +68,7 @@ services:
|
|||
|
||||
---
|
||||
### Estimation du temps de build
|
||||
Sur ma machine (WSL), le temps de build d'environ une minute.
|
||||
Sur ma machine (WSL), le temps de build est d'environ une minute.
|
||||
|
||||
`time cargo build` :
|
||||
```
|
||||
|
@ -87,7 +87,7 @@ Beaucoup de blabla, au final, qu'est ce qui fonctionne ?
|
|||
- [ ] Commandes Mattermost
|
||||
|
||||
Cependant, je pense avoir fait 50% du travail pour le pont Mattermost, il manque, je pense, une implémentation du websocket de la part
|
||||
du [repsonsable de `mattermost_api`](https://github.com/Celeo). J'ai essayer de le faire moi-même mais pas réussi.
|
||||
du [responsable de `mattermost_api`](https://github.com/Celeo). J'ai essayé de le faire moi-même mais pas réussi.
|
||||
|
||||
# Exécution
|
||||
<div align="center">
|
||||
|
|
|
@ -42,7 +42,7 @@ struct InformationsBot {
|
|||
|
||||
/// Implémentation pour utiliser facilement les valeurs de la structure
|
||||
/// Normalement, rien ne panique car si `start_discord`
|
||||
/// n'as pas encore été appellé on panique avant d'arriver ici.
|
||||
/// n'as pas encore été appelé, on panique avant d'arriver ici.
|
||||
///
|
||||
/// On fait quand même le match pour être sûr.
|
||||
impl InformationsBot {
|
||||
|
@ -80,7 +80,7 @@ impl InformationsBot {
|
|||
/// Récupère API, sinon panique
|
||||
///
|
||||
/// Question importante, je créer l'API dans `main.rs`, alors pourquoi je
|
||||
/// n'ai pas utilisé cette api pour ce fichier ? Tout simplement parce que
|
||||
/// n'ai pas utilisé cet api pour ce fichier ? Tout simplement parce que
|
||||
/// `mattermost_api::client::Mattermost` n'implémente pas le trait de Clone
|
||||
/// impossible donc (pas de succès avec Mutex)...
|
||||
pub async fn recuperation_api(&self) -> mattermost_api::client::Mattermost {
|
||||
|
@ -102,9 +102,9 @@ impl InformationsBot {
|
|||
static mut _INFO: Option<InformationsBot> = None;
|
||||
|
||||
/// Récupère les informations qui sont nécessaire à la communication avec Mattermost
|
||||
/// Attention, on fait paniqué le programme si l valeur est vide, pour éviter
|
||||
/// ça, il faut appeller cette fonction seulement quand `start_discord`
|
||||
/// a été appellé car c'est elle qui ajoute le préfixe à `_INFO`
|
||||
/// Attention, on fait paniqué le programme si la valeur est vide, pour éviter
|
||||
/// ça, il faut appeler cette fonction seulement quand `start_discord`
|
||||
/// a été appelé car c'est elle qui ajoute le préfixe à `_INFO`
|
||||
///
|
||||
/// Je sais que c'est vraiment naze de faire ça (variable static + blocs unsafe)
|
||||
/// mais c'est la seul solution que j'ai trouvé en évitant de trop étoffé avec du
|
||||
|
@ -140,7 +140,7 @@ impl EventHandler for Handler {
|
|||
// Gestion erreur lors de l'envoie de la réponse
|
||||
erreur::affiche_message_erreur(&format!("Erreur d'envoie de message : {:?}", err));
|
||||
}
|
||||
// Ici on peut rajouter des `if` pour rajouter des commandes...
|
||||
// Ici on peut rajouter des `if` pour ajouter des commandes...
|
||||
} else {
|
||||
/* Dans ce cas là, ce n'est pas une commande, alors c'est un message.
|
||||
* Il faut l'envoyer à Mattermost. */
|
||||
|
@ -148,9 +148,9 @@ impl EventHandler for Handler {
|
|||
}
|
||||
}
|
||||
|
||||
// Fonction appellé quand le bot est lancé et connecté
|
||||
// Fonction appelé quand le bot est lancé et connecté
|
||||
async fn ready(&self, _: Context, _: Ready) {
|
||||
println!("Écoute les évènements Discord...");
|
||||
println!("Écoute les événements Discord...");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ async fn main() {
|
|||
match env::var("PSEUDO") {
|
||||
Ok(string) => {
|
||||
if token_recuperer {
|
||||
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définie un pseudo."));
|
||||
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définit un pseudo."));
|
||||
}
|
||||
pseudo_ok = true;
|
||||
pseudo = string;
|
||||
|
@ -63,7 +63,7 @@ async fn main() {
|
|||
match env::var("MOT_DE_PASSE") {
|
||||
Ok(string) => {
|
||||
if token_recuperer {
|
||||
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définie un mot de passe."));
|
||||
panic!("{}", erreur::message_erreur("Tu as déjà choisie un token, vous ne pouvez pas aussi avoir définit un mot de passe."));
|
||||
}
|
||||
mot_de_passe = string;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ async fn main() {
|
|||
panic!(
|
||||
"{}",
|
||||
erreur::message_erreur(
|
||||
"Tu as renseigné un pseudo mais pas de mot de passe dans le fichier .env"
|
||||
"Tu as renseigner un pseudo mais pas de mot de passe dans le fichier .env"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ async fn main() {
|
|||
// On affiche les infos d'une team
|
||||
mattermost::team_info(&api, &equipe).await;
|
||||
|
||||
// Tâche en paralèlle
|
||||
// Tâche en parallèle
|
||||
mattermost::start_mattermost(mattermost::ConnectionInfoWebsocket {
|
||||
api,
|
||||
token: token_mattermost.clone(), /* , prefix */
|
||||
|
|
|
@ -146,7 +146,7 @@ pub async fn get_channel_info(
|
|||
}
|
||||
|
||||
/// Récupère l'ID du salon renseigné grâce à son nom en faisant une requête à l'API de Mattermost
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilise le code en dessous...
|
||||
pub async fn channel_id_by_name(api: &mattermost_api::client::Mattermost, salon: String) -> String {
|
||||
println!("\nRécupération de l'ID du salon {}...", salon);
|
||||
match get_channel_info(api).await {
|
||||
|
@ -175,7 +175,7 @@ pub async fn channel_id_by_name(api: &mattermost_api::client::Mattermost, salon:
|
|||
}
|
||||
|
||||
/// Affiche les informations complète sur une équipe
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilise le code en dessous...
|
||||
pub async fn team_info(api: &mattermost_api::client::Mattermost, equipe: &str) {
|
||||
println!("\nTentative de récupération de l'équipe {}...", equipe);
|
||||
match api.get_team_info(equipe).await {
|
||||
|
@ -214,13 +214,13 @@ pub async fn connect_websocket(
|
|||
}
|
||||
|
||||
/// Lance le bot Mattermost
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilises le code en dessous...
|
||||
#[allow(dead_code)] // je comprends pas pourquoi j'ai besoin de mettre ça, parce que j'utilise le code en dessous...
|
||||
pub async fn start_mattermost(connection: ConnectionInfoWebsocket) {
|
||||
match connect_websocket(&connection.api, &connection.token).await {
|
||||
Ok(res) => {
|
||||
/* Pour l'instant ici on a reçois un string donc on l'affiche (Result<String, ApiError>) mais
|
||||
* à l'avenir normalement ici on bloque le thread principale (ou on laisse
|
||||
* le bot discord le bloqué et ici ça s'execute en parallèle au bot discord)
|
||||
* le bot discord le bloqué et ici ça s'éxécute en parallèle au bot discord)
|
||||
* et on récupère toutes les informations dont on a besoin, c'est à dire les
|
||||
* messages envoyés. */
|
||||
println!("{}", res);
|
||||
|
@ -237,7 +237,7 @@ pub async fn start_mattermost(connection: ConnectionInfoWebsocket) {
|
|||
dans la librarie que j'utilises (mon issue : https://github.com/Celeo/mattermost_api/issues/1)
|
||||
Cependant je pense que c'est quand même prévu à l'avenir : https://github.com/Celeo/mattermost_api/blob/master/src/client.rs#L185
|
||||
|
||||
En attendant, utiliser un websocket rend tout plus simple, on récupère tout les evenements qu'on reçois, on traite les messages
|
||||
En attendant, utiliser un websocket rend tout plus simple, on récupère tout les événements qu'on reçoit, on traite les messages
|
||||
et si un utilisateur demande une commande on envoie un message en réponse (en théorie).
|
||||
|
||||
-> Appel de la connexion au websocket donne une erreur HTTP400 malheureusement
|
||||
|
@ -254,5 +254,5 @@ pub async fn start_mattermost(connection: ConnectionInfoWebsocket) {
|
|||
-> S'il y en a une qui n'est plus présente, on la retire
|
||||
-> https://api.mattermost.com/#operation/DeleteCommand
|
||||
|
||||
- Les commandes font une requête, doit on faire tourner un serveur web en local ?
|
||||
- Les commandes font une requête, doit-on faire tourner un serveur web en local ?
|
||||
*/
|
||||
|
|
Reference in a new issue