Skip to content

Commit 27771d3

Browse files
committed
update
1 parent ff8a254 commit 27771d3

File tree

9 files changed

+838
-733
lines changed

9 files changed

+838
-733
lines changed

Cargo.lock

Lines changed: 789 additions & 690 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

default.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,7 @@ rustPlatform.buildRustPackage rec {
2222

2323
cargoLock = {
2424
lockFile = ./Cargo.lock;
25+
allowBuiltinFetchGit = true;
26+
2527
};
2628
}

flake.lock

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/commands/mod.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ pub(crate) const ACCENT_COLOUR: Colour = Colour(0x8957e5);
66
pub(crate) const OK_COLOUR: Colour = Colour(0x2ecc71);
77
pub(crate) const ERROR_COLOUR: Colour = Colour(0xe74c3c);
88

9+
use std::borrow::Cow;
10+
911
use to_arraystring::ToArrayString;
1012

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

9799
let colour = Colour::TEAL;
98100

99-
let components = CreateActionRow::Buttons(vec![
101+
let components = CreateActionRow::Buttons(Cow::Owned(vec![
100102
CreateButton::new(&*prev_button_id).emoji('◀'),
101103
CreateButton::new(&*next_button_id).emoji('▶'),
102-
]);
104+
]));
103105
let mut current_page = 0;
104106

105107
// Don't paginate if its one page.

src/commands/snippets.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1+
use std::borrow::Cow;
2+
13
use crate::{
24
commands::{respond_embed, respond_err, respond_ok},
35
structures::{Embeddable, Snippet},
46
Context, Error,
57
};
6-
use ::serenity::futures::{Stream, StreamExt};
78
use poise::serenity_prelude::{
8-
self as serenity, futures, CreateAttachment, CreateEmbed, CreateInteractionResponse,
9+
self as serenity, CreateAttachment, CreateEmbed, CreateInteractionResponse,
910
CreateInteractionResponseMessage,
1011
};
1112

1213
#[allow(clippy::unused_async)]
1314
async fn autocomplete_snippet<'a>(
14-
ctx: Context<'a>,
15+
ctx: Context<'_>,
1516
partial: &'a str,
16-
) -> impl Stream<Item = String> + 'a {
17-
let snippet_list: Vec<String> = {
18-
ctx.data()
19-
.state
20-
.read()
21-
.unwrap()
22-
.snippets
23-
.iter()
24-
.map(Snippet::format_output)
25-
.collect()
26-
};
17+
) -> serenity::CreateAutocompleteResponse<'a> {
18+
let snippet_list: Vec<_> = ctx
19+
.data()
20+
.state
21+
.read()
22+
.unwrap()
23+
.snippets
24+
.iter()
25+
.map(Snippet::format_output)
26+
.filter(|name| name.to_lowercase().contains(&partial.to_lowercase()))
27+
.map(serenity::AutocompleteChoice::from)
28+
.collect();
2729

28-
futures::stream::iter(snippet_list).filter(move |name| {
29-
futures::future::ready(name.to_lowercase().contains(&partial.to_lowercase()))
30-
})
30+
serenity::CreateAutocompleteResponse::new().set_choices(snippet_list)
3131
}
3232

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

285-
let components = serenity::CreateActionRow::Buttons(vec![
285+
let components = serenity::CreateActionRow::Buttons(Cow::Owned(vec![
286286
serenity::CreateButton::new(&cancel_id).label("Cancel"),
287287
serenity::CreateButton::new(&delete_id)
288288
.label("Delete")
289289
.style(serenity::ButtonStyle::Danger),
290-
]);
290+
]));
291291

292292
let builder: poise::CreateReply = poise::CreateReply::default()
293293
.content(format!(

src/commands/udev.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub async fn generate_udev(
2121
) -> Result<(), Error> {
2222
let udev = gen_udev(vendor_id, product_id, libinput_override.unwrap_or(true));
2323

24-
let attachment = CreateAttachment::bytes(udev, "70-opentabletdriver.rules");
24+
let attachment = CreateAttachment::bytes(udev.into_bytes(), "70-opentabletdriver.rules");
2525
let embed = CreateEmbed::new()
2626
.title("Generated udev rules")
2727
.description(

src/commands/utils.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,30 @@ use crate::{
66
Context, Error,
77
};
88

9-
use poise::serenity_prelude::{Colour, CreateEmbed, CreateEmbedFooter, EditMessage, Message};
9+
use poise::serenity_prelude::{
10+
self as serenity, Colour, CreateEmbed, CreateEmbedFooter, EditMessage, Message,
11+
};
1012
use regex::Regex;
11-
use serenity::futures::{self, Stream, StreamExt};
1213

1314
#[allow(clippy::unused_async)]
1415
async fn autocomplete_key<'a>(
1516
ctx: Context<'a>,
1617
partial: &'a str,
17-
) -> impl Stream<Item = String> + 'a {
18-
let snippet_list: Vec<String> = {
18+
) -> serenity::CreateAutocompleteResponse<'a> {
19+
let snippet_list: Vec<_> = {
1920
ctx.data()
2021
.state
2122
.read()
2223
.unwrap()
2324
.issue_prefixes
2425
.iter()
2526
.map(|s| s.0.clone())
27+
.filter(|name| name.contains(partial))
28+
.map(serenity::AutocompleteChoice::from)
2629
.collect()
2730
};
2831

29-
futures::stream::iter(snippet_list)
30-
.filter(move |name| futures::future::ready(name.contains(partial)))
32+
serenity::CreateAutocompleteResponse::new().set_choices(snippet_list)
3133
}
3234

3335
/// Create an embed in the current channel.

src/events/issues/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::{sync::OnceLock, time::Duration};
1+
use std::{borrow::Cow, sync::OnceLock, time::Duration};
22

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

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

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

57-
let components = serenity::CreateActionRow::Buttons(vec![
57+
let components = serenity::CreateActionRow::Buttons(Cow::Owned(vec![
5858
CreateButton::new(&*remove_id)
5959
.label("delete")
6060
.style(ButtonStyle::Danger),
6161
CreateButton::new(&*hide_body_id).label("hide body"),
62-
]);
62+
]));
6363

6464
let content: serenity::CreateMessage = serenity::CreateMessage::default()
6565
.embeds(embeds)
@@ -75,10 +75,10 @@ pub async fn message(framework: FrameworkContext<'_>, message: &Message) {
7575
.timeout(Duration::from_secs(60))
7676
.await
7777
{
78-
let has_perms = press.member.as_ref().map_or(false, |member| {
79-
member.permissions.map_or(false, |member_perms| {
80-
member_perms.contains(Permissions::MANAGE_MESSAGES)
81-
})
78+
let has_perms = press.member.as_ref().is_some_and(|member| {
79+
member
80+
.permissions
81+
.is_some_and(|member_perms| member_perms.contains(Permissions::MANAGE_MESSAGES))
8282
});
8383

8484
// Users who do not own the message or have permissions cannot execute the interactions.

src/main.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ async fn on_error(error: poise::FrameworkError<'_, Data, Error>) {
7171

7272
#[tokio::main]
7373
async fn main() {
74-
let discord_token = env::var("DISCORD_TOKEN").expect("Expected discord api token");
74+
let discord_token =
75+
serenity::Token::from_env("DISCORD_TOKEN").expect("Expected discord api token");
7576
let github_token = env::var("GITHUB_TOKEN").expect("Expected github api token");
7677

7778
let octo_builder = Octocrab::builder().personal_token(github_token);
@@ -128,7 +129,7 @@ async fn main() {
128129
| GatewayIntents::DIRECT_MESSAGES
129130
| GatewayIntents::MESSAGE_CONTENT;
130131

131-
let mut client = serenity::Client::builder(&discord_token, intents)
132+
let mut client = serenity::Client::builder(discord_token, intents)
132133
.framework(framework)
133134
.data(Arc::new(data))
134135
.await

0 commit comments

Comments
 (0)