wip
This commit is contained in:
+63
-12
@@ -2,10 +2,12 @@ mod commands;
|
|||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
|
use async_nats::jetstream::{self, context::traits::Requester};
|
||||||
use serenity::{
|
use serenity::{
|
||||||
Client,
|
Client,
|
||||||
all::{Context, EventHandler, GatewayIntents},
|
all::{Context, EventHandler, GatewayIntents},
|
||||||
async_trait,
|
async_trait,
|
||||||
|
futures::future::ErrInto,
|
||||||
model::{
|
model::{
|
||||||
application::{Command, Interaction},
|
application::{Command, Interaction},
|
||||||
gateway::Ready,
|
gateway::Ready,
|
||||||
@@ -65,26 +67,75 @@ impl EventHandler for Handler {
|
|||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
// Configure the client with your Discord bot token in the environment.
|
|
||||||
let discord_token = env::var("DISCORD_TOKEN").expect("Expected a token in the environment");
|
let discord_token = env::var("DISCORD_TOKEN").expect("Expected a token in the environment");
|
||||||
|
|
||||||
let nats_client = async_nats::connect("nats://localhost:4222")
|
let nats_client = async_nats::connect("nats://localhost:4222")
|
||||||
.await
|
.await
|
||||||
.expect("Error creating nats client");
|
.expect("Error creating nats client");
|
||||||
|
|
||||||
let handler = Handler { nats_client };
|
let jetstream_client = jetstream::new(nats_client.clone());
|
||||||
|
|
||||||
// Build our client.
|
let stream = jetstream_client
|
||||||
let mut discord_client = Client::builder(discord_token, GatewayIntents::non_privileged())
|
.create_stream(jetstream::stream::Config {
|
||||||
.event_handler(handler)
|
name: "LOCKS".to_string(),
|
||||||
|
subjects: vec!["locks.*".to_string()],
|
||||||
|
storage: jetstream::stream::StorageType::Memory,
|
||||||
|
max_messages_per_subject: 1,
|
||||||
|
discard_new_per_subject: true,
|
||||||
|
discard: jetstream::stream::DiscardPolicy::New,
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
.await
|
.await
|
||||||
.expect("Error creating discord client");
|
.expect("Error creating locks stream");
|
||||||
|
|
||||||
// Finally, start a single shard, and start listening to events.
|
println!("created the stream");
|
||||||
//
|
|
||||||
// Shards will automatically attempt to reconnect, and will perform exponential backoff until
|
match jetstream_client.publish("locks.a", "test".into()).await.unwrap().await {
|
||||||
// it reconnects.
|
Ok(a) => {
|
||||||
if let Err(why) = discord_client.start().await {
|
println!("publish ok {:?}", a);
|
||||||
println!("Client start error: {why:?}");
|
|
||||||
}
|
}
|
||||||
|
Err(why) => {
|
||||||
|
println!("{why:?}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// match jetstream_client.request("locks.a", "test").await {
|
||||||
|
// Ok(a) => {
|
||||||
|
// println!("publish ok {a:?}");
|
||||||
|
// Ok("a")
|
||||||
|
// }
|
||||||
|
// Err(why) => {
|
||||||
|
// println!("{why:?}");
|
||||||
|
// Err("a")
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// match jetstream_client.publish("locks.b", "test".into()).await {
|
||||||
|
// Ok(a) => {
|
||||||
|
// println!("publish ok {a:?}");
|
||||||
|
// }
|
||||||
|
// Err(why) => {
|
||||||
|
// println!("{why:?}");
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// match jetstream_client.publish("locks.a", "test".into()).await {
|
||||||
|
// Ok(a) => {
|
||||||
|
// println!("publish ok {a:?}");
|
||||||
|
// }
|
||||||
|
// Err(why) => {
|
||||||
|
// println!("{why:?}");
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
|
println!("done");
|
||||||
|
|
||||||
|
// let handler = Handler { nats_client };
|
||||||
|
|
||||||
|
// let mut discord_client = Client::builder(discord_token, GatewayIntents::non_privileged())
|
||||||
|
// .event_handler(handler)
|
||||||
|
// .await
|
||||||
|
// .expect("Error creating discord client");
|
||||||
|
|
||||||
|
// if let Err(why) = discord_client.start().await {
|
||||||
|
// println!("Client start error: {why:?}");
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ services:
|
|||||||
image: nats:2.12.5-alpine3.22
|
image: nats:2.12.5-alpine3.22
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:4222:4222
|
- 127.0.0.1:4222:4222
|
||||||
|
command: --jetstream
|
||||||
|
|||||||
Reference in New Issue
Block a user