Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesbt365 committed Nov 26, 2024
1 parent ff8a254 commit 27771d3
Show file tree
Hide file tree
Showing 9 changed files with 838 additions and 733 deletions.
1,479 changes: 789 additions & 690 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,7 @@ rustPlatform.buildRustPackage rec {

cargoLock = {
lockFile = ./Cargo.lock;
allowBuiltinFetchGit = true;

};
}
7 changes: 3 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ pub(crate) const ACCENT_COLOUR: Colour = Colour(0x8957e5);
pub(crate) const OK_COLOUR: Colour = Colour(0x2ecc71);
pub(crate) const ERROR_COLOUR: Colour = Colour(0xe74c3c);

use std::borrow::Cow;

use to_arraystring::ToArrayString;

use crate::{Context, Error};
Expand Down Expand Up @@ -96,10 +98,10 @@ pub async fn paginate_lists(

let colour = Colour::TEAL;

let components = CreateActionRow::Buttons(vec![
let components = CreateActionRow::Buttons(Cow::Owned(vec![
CreateButton::new(&*prev_button_id).emoji('◀'),
CreateButton::new(&*next_button_id).emoji('▶'),
]);
]));
let mut current_page = 0;

// Don't paginate if its one page.
Expand Down
38 changes: 19 additions & 19 deletions src/commands/snippets.rs
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
use std::borrow::Cow;

use crate::{
commands::{respond_embed, respond_err, respond_ok},
structures::{Embeddable, Snippet},
Context, Error,
};
use ::serenity::futures::{Stream, StreamExt};
use poise::serenity_prelude::{
self as serenity, futures, CreateAttachment, CreateEmbed, CreateInteractionResponse,
self as serenity, CreateAttachment, CreateEmbed, CreateInteractionResponse,
CreateInteractionResponseMessage,
};

#[allow(clippy::unused_async)]
async fn autocomplete_snippet<'a>(
ctx: Context<'a>,
ctx: Context<'_>,
partial: &'a str,
) -> impl Stream<Item = String> + 'a {
let snippet_list: Vec<String> = {
ctx.data()
.state
.read()
.unwrap()
.snippets
.iter()
.map(Snippet::format_output)
.collect()
};
) -> serenity::CreateAutocompleteResponse<'a> {
let snippet_list: Vec<_> = ctx
.data()
.state
.read()
.unwrap()
.snippets
.iter()
.map(Snippet::format_output)
.filter(|name| name.to_lowercase().contains(&partial.to_lowercase()))
.map(serenity::AutocompleteChoice::from)
.collect();

futures::stream::iter(snippet_list).filter(move |name| {
futures::future::ready(name.to_lowercase().contains(&partial.to_lowercase()))
})
serenity::CreateAutocompleteResponse::new().set_choices(snippet_list)
}

/// Show a snippet
Expand Down Expand Up @@ -282,12 +282,12 @@ async fn remove_snippet_confirm(ctx: &Context<'_>, snippet: &Snippet) -> Result<
let delete_id = format!("{ctx_id}cancel");
let cancel_id = format!("{ctx_id}delete");

let components = serenity::CreateActionRow::Buttons(vec![
let components = serenity::CreateActionRow::Buttons(Cow::Owned(vec![
serenity::CreateButton::new(&cancel_id).label("Cancel"),
serenity::CreateButton::new(&delete_id)
.label("Delete")
.style(serenity::ButtonStyle::Danger),
]);
]));

let builder: poise::CreateReply = poise::CreateReply::default()
.content(format!(
Expand Down
2 changes: 1 addition & 1 deletion src/commands/udev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ pub async fn generate_udev(
) -> Result<(), Error> {
let udev = gen_udev(vendor_id, product_id, libinput_override.unwrap_or(true));

let attachment = CreateAttachment::bytes(udev, "70-opentabletdriver.rules");
let attachment = CreateAttachment::bytes(udev.into_bytes(), "70-opentabletdriver.rules");
let embed = CreateEmbed::new()
.title("Generated udev rules")
.description(
Expand Down
14 changes: 8 additions & 6 deletions src/commands/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,30 @@ use crate::{
Context, Error,
};

use poise::serenity_prelude::{Colour, CreateEmbed, CreateEmbedFooter, EditMessage, Message};
use poise::serenity_prelude::{
self as serenity, Colour, CreateEmbed, CreateEmbedFooter, EditMessage, Message,
};
use regex::Regex;
use serenity::futures::{self, Stream, StreamExt};

#[allow(clippy::unused_async)]
async fn autocomplete_key<'a>(
ctx: Context<'a>,
partial: &'a str,
) -> impl Stream<Item = String> + 'a {
let snippet_list: Vec<String> = {
) -> serenity::CreateAutocompleteResponse<'a> {
let snippet_list: Vec<_> = {
ctx.data()
.state
.read()
.unwrap()
.issue_prefixes
.iter()
.map(|s| s.0.clone())
.filter(|name| name.contains(partial))
.map(serenity::AutocompleteChoice::from)
.collect()
};

futures::stream::iter(snippet_list)
.filter(move |name| futures::future::ready(name.contains(partial)))
serenity::CreateAutocompleteResponse::new().set_choices(snippet_list)
}

/// Create an embed in the current channel.
Expand Down
18 changes: 9 additions & 9 deletions src/events/issues/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::{sync::OnceLock, time::Duration};
use std::{borrow::Cow, sync::OnceLock, time::Duration};

use crate::{commands::interaction_err, structures::Embeddable, Data, FrameworkContext};

Expand Down Expand Up @@ -50,16 +50,16 @@ pub async fn message(framework: FrameworkContext<'_>, message: &Message) {
let remove_id = aformat!("{ctx_id}delete");
let hide_body_id = aformat!("{ctx_id}hide_body");

let remove = CreateActionRow::Buttons(vec![CreateButton::new(&*remove_id)
let remove = CreateActionRow::Buttons(Cow::Owned(vec![CreateButton::new(&*remove_id)
.label("delete")
.style(ButtonStyle::Danger)]);
.style(ButtonStyle::Danger)]));

let components = serenity::CreateActionRow::Buttons(vec![
let components = serenity::CreateActionRow::Buttons(Cow::Owned(vec![
CreateButton::new(&*remove_id)
.label("delete")
.style(ButtonStyle::Danger),
CreateButton::new(&*hide_body_id).label("hide body"),
]);
]));

let content: serenity::CreateMessage = serenity::CreateMessage::default()
.embeds(embeds)
Expand All @@ -75,10 +75,10 @@ pub async fn message(framework: FrameworkContext<'_>, message: &Message) {
.timeout(Duration::from_secs(60))
.await
{
let has_perms = press.member.as_ref().map_or(false, |member| {
member.permissions.map_or(false, |member_perms| {
member_perms.contains(Permissions::MANAGE_MESSAGES)
})
let has_perms = press.member.as_ref().is_some_and(|member| {
member
.permissions
.is_some_and(|member_perms| member_perms.contains(Permissions::MANAGE_MESSAGES))
});

// Users who do not own the message or have permissions cannot execute the interactions.
Expand Down
5 changes: 3 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ async fn on_error(error: poise::FrameworkError<'_, Data, Error>) {

#[tokio::main]
async fn main() {
let discord_token = env::var("DISCORD_TOKEN").expect("Expected discord api token");
let discord_token =
serenity::Token::from_env("DISCORD_TOKEN").expect("Expected discord api token");
let github_token = env::var("GITHUB_TOKEN").expect("Expected github api token");

let octo_builder = Octocrab::builder().personal_token(github_token);
Expand Down Expand Up @@ -128,7 +129,7 @@ async fn main() {
| GatewayIntents::DIRECT_MESSAGES
| GatewayIntents::MESSAGE_CONTENT;

let mut client = serenity::Client::builder(&discord_token, intents)
let mut client = serenity::Client::builder(discord_token, intents)
.framework(framework)
.data(Arc::new(data))
.await
Expand Down

0 comments on commit 27771d3

Please sign in to comment.