Update deps

This commit is contained in:
oupson 2022-08-09 19:19:05 +02:00
parent 48b37a1ee3
commit a957455a97
Signed by: oupson
GPG Key ID: 3BD88615552EFCB7
11 changed files with 756 additions and 695 deletions

1369
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ default-run = "rusty_bot"
music = ["serenity/voice", "songbird"]
[dependencies]
serenity = { version = "0.10.10", features = ["unstable_discord_api"] }
serenity = { version = "0.11", features = ["unstable_discord_api"] }
toml = "0.5"
serde = { version = "1.0", features = ["derive"] }
reqwest = "0.11"
@ -25,6 +25,6 @@ serde_json = "1.0"
log = "0.4"
log4rs = "1.0"
ctrlc = "3.1"
songbird = { version = "0.2", features = ["driver", "builtin-queue", "yt-dlp"], optional = true }
songbird = { version = "0.3", features = ["driver", "builtin-queue", "yt-dlp"], optional = true }
rusty-bot-database = { path = "../rusty-bot-database" }
anyhow = "1.0.56"

View File

@ -20,10 +20,10 @@ async fn kick(ctx: &Context, msg: &Message) -> CommandResult {
// TODO CACHE ? + error message
if let Ok(sender_member) = msg.member(ctx).await {
for user in &msg.mentions {
if let Some(member) = ctx.cache.member(msg.guild_id.unwrap(), user.id).await {
if let Some(member) = ctx.cache.member(msg.guild_id.unwrap(), user.id) {
debug!("Kicking {:?}", user);
let kick = if let Some(role_member) = sender_member.highest_role_info(ctx).await {
if let Some(role) = member.highest_role_info(ctx).await {
let kick = if let Some(role_member) = sender_member.highest_role_info(ctx) {
if let Some(role) = member.highest_role_info(ctx) {
role_member.1 > role.1
} else {
true
@ -62,10 +62,10 @@ async fn ban(ctx: &Context, msg: &Message) -> CommandResult {
// TODO CACHE ? + Error message
if let Ok(sender_member) = msg.member(ctx).await {
for user in &msg.mentions {
if let Some(member) = ctx.cache.member(msg.guild_id.unwrap(), user.id).await {
if let Some(member) = ctx.cache.member(msg.guild_id.unwrap(), user.id) {
debug!("Kicking {:?}", user);
let kick = if let Some(role_member) = sender_member.highest_role_info(ctx).await {
if let Some(role) = member.highest_role_info(ctx).await {
let kick = if let Some(role_member) = sender_member.highest_role_info(ctx) {
if let Some(role) = member.highest_role_info(ctx) {
role_member.1 > role.1
} else {
true

View File

@ -303,7 +303,7 @@ async fn random_mute(ctx: &Context, msg: &Message) -> CommandResult {
let mut members = guild.members(&ctx, Some(1000), None).await?;
let mut m: usize = rand::random::<usize>() % members.len();
while members[m].permissions(&ctx).await.unwrap().administrator() || members[m].user.bot {
while members[m].permissions(&ctx).unwrap().administrator() || members[m].user.bot {
m = rand::random::<usize>() % members.len();
}

View File

@ -46,7 +46,7 @@ async fn command(
let permissions = Permissions::from_bits_truncate(
author
.permissions
.map(|v| v.bits)
.map(|v| v.bits())
.ok_or("Failed to get permission")?,
);
@ -60,7 +60,7 @@ async fn command(
response
.kind(InteractionResponseType::ChannelMessageWithSource)
.interaction_response_data(|message| {
message.create_embed(|e| {
message.embed(|e| {
embed_author(e, Some(author))
.title("Error")
.description("You don't have the right to do that")
@ -108,7 +108,6 @@ async fn goulag(
let mut member = ctx
.cache
.guild(guild_id)
.await
.ok_or("Failed to get guild")?
.member(&ctx.http, user_id)
.await?;
@ -120,7 +119,7 @@ async fn goulag(
response
.kind(InteractionResponseType::ChannelMessageWithSource)
.interaction_response_data(|message| {
message.create_embed(|e| {
message.embed(|e| {
embed_author(e, Some(author))
.title("Mute")
.description(format!("{} was muted", member.display_name()))
@ -138,7 +137,7 @@ async fn goulag(
response
.kind(InteractionResponseType::ChannelMessageWithSource)
.interaction_response_data(|message| {
message.create_embed(|e| {
message.embed(|e| {
embed_author(e, Some(author))
.title("Error")
.description("Unknown mute role")
@ -167,7 +166,6 @@ async fn message_interact(
let role = match ctx
.cache
.guild(guild_id)
.await
.unwrap()
.role_by_name("mute")
{

View File

@ -10,7 +10,7 @@ use serenity::{
Args, CommandResult,
},
http::Http,
model::{channel::Message, id::ChannelId, misc::Mentionable, permissions::Permissions},
model::{channel::Message, id::ChannelId, permissions::Permissions}, prelude::Mentionable,
};
use songbird::{Call, Event, EventContext, TrackEvent};
@ -66,7 +66,7 @@ struct Music;
#[description("Join the channel you are connected")]
#[aliases("j")]
async fn join(ctx: &Context, msg: &Message) -> CommandResult {
let guild = match msg.guild(&ctx.cache).await {
let guild = match msg.guild(&ctx.cache) {
Some(guild) => guild,
None => {
msg.channel_id.say(&ctx.http, "DMs not supported").await?;
@ -76,7 +76,7 @@ async fn join(ctx: &Context, msg: &Message) -> CommandResult {
};
let member = msg.member(&ctx.http).await?;
let can_manage_guild = has_permission(ctx, &member, &[Permissions::MANAGE_GUILD]).await?;
let can_manage_guild = has_permission(ctx, &member, &[Permissions::MANAGE_GUILD])?;
if if let Some(member) = &msg.member {
is_mute(ctx, member, guild.id).await.unwrap_or(false) && !can_manage_guild
} else {
@ -184,7 +184,6 @@ async fn leave(ctx: &Context, msg: &Message) -> CommandResult {
let guild_id = match ctx
.cache
.guild_channel_field(msg.channel_id, |channel| channel.guild_id)
.await
{
Some(id) => id,
None => {
@ -240,7 +239,7 @@ async fn leave(ctx: &Context, msg: &Message) -> CommandResult {
#[description("Play a music (require an url)")]
#[aliases("p")]
async fn play(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -274,7 +273,7 @@ async fn play(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
Ok(c) => match c.as_str() {
"clear" => {
let member = &msg.member(ctx).await.unwrap();
has_permission(ctx, member, &[Permissions::MANAGE_GUILD]).await?
has_permission(ctx, member, &[Permissions::MANAGE_GUILD])?
}
_ => false,
},
@ -471,7 +470,7 @@ async fn play(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
#[command]
#[description("Next music")]
async fn next(ctx: &Context, msg: &Message) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id){
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -517,7 +516,7 @@ async fn next(ctx: &Context, msg: &Message) -> CommandResult {
#[command]
#[description("Stop the music")]
async fn stop(ctx: &Context, msg: &Message) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -567,7 +566,7 @@ async fn stop(ctx: &Context, msg: &Message) -> CommandResult {
#[command]
#[description("Pause the music")]
async fn pause(ctx: &Context, msg: &Message) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -617,7 +616,7 @@ async fn pause(ctx: &Context, msg: &Message) -> CommandResult {
#[command]
#[description("Resume the music")]
async fn resume(ctx: &Context, msg: &Message) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -660,7 +659,7 @@ async fn resume(ctx: &Context, msg: &Message) -> CommandResult {
#[command]
#[description("Remove a song from the track")]
async fn remove(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id
@ -763,7 +762,7 @@ async fn remove(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
#[command]
#[description("Get the queue")]
async fn queue(ctx: &Context, msg: &Message) -> CommandResult<()> {
let guild_id = match ctx.cache.guild_channel(msg.channel_id).await {
let guild_id = match ctx.cache.guild_channel(msg.channel_id) {
Some(channel) => channel.guild_id,
None => {
msg.channel_id

View File

@ -43,11 +43,11 @@ pub(crate) async fn can_use_voice_command(
msg: &Message,
member: &Member,
) -> Result<(), UseVoiceError> {
if has_permission(ctx, member, &[Permissions::MANAGE_GUILD]).await? {
if has_permission(ctx, member, &[Permissions::MANAGE_GUILD])? {
return Ok(());
}
let guild = match msg.guild(&ctx.cache).await {
let guild = match msg.guild(&ctx.cache) {
Some(guild) => guild,
None => return Err(UseVoiceError::NotInGuild),
};

View File

@ -58,7 +58,7 @@ async fn muterole(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult
if let Some(role_id) = role_id {
format!(
"Mute role is @{}",
RoleId(role_id).to_role_cached(&ctx).await.unwrap().name
RoleId(role_id).to_role_cached(&ctx).unwrap().name
)
} else {
"Mute role is None".to_string()

View File

@ -84,7 +84,7 @@ async fn main() -> anyhow::Result<()> {
let conn = Arc::new(Mutex::new(establish_connection(&conf.bot.database_url)?));
let http = Http::new_with_token(&token);
let http = Http::new(&token);
// We will fetch your bot's owners and id
let (owners, bot_id) = match http.get_current_application_info().await {
@ -102,7 +102,7 @@ async fn main() -> anyhow::Result<()> {
let mut framework = StandardFramework::new()
.configure(|c| {
c.with_whitespace(true)
.on_mention(Some(bot_id))
.on_mention(Some(serenity::model::id::UserId(bot_id.0)))
.prefix(PREFIX)
// In this case, if "," would be first, a message would never
// be delimited at ", ", forcing you to trim your arguments if you
@ -138,7 +138,7 @@ async fn main() -> anyhow::Result<()> {
.unrecognised_command(unknown_command)
}
let mut client = Client::builder(&token)
let mut client = Client::builder(&token, GatewayIntents::default())
.application_id(conf.bot.application_id)
.event_handler(Messages {})
.framework(framework);
@ -191,7 +191,7 @@ impl EventHandler for Messages {
info!("{} connected to discord", ready.user.name);
if let Some(cache) = ctx.cache() {
cache.set_max_messages(10).await; // TODO CONFIG
cache.set_max_messages(10); // TODO CONFIG
}
ctx.set_presence(Some(Activity::listening("?")), OnlineStatus::Online)
@ -239,8 +239,7 @@ async fn log_mentions(ctx: Context, new_message: &Message) -> CommandResult {
&ctx,
&new_message.member(&ctx).await?,
&[Permissions::ADMINISTRATOR],
)
.await?
)?
{
return Ok(());
}
@ -252,7 +251,7 @@ async fn log_mentions(ctx: Context, new_message: &Message) -> CommandResult {
} else {
let mut user_mentioned: HashSet<u64> = HashSet::with_capacity(MINIMUM_MENTIONS); // TODO IN GUILD OPTIONS
let guild = new_message.guild(&ctx).await.ok_or("Failed to get guild")?;
let guild = new_message.guild(&ctx).ok_or("Failed to get guild")?;
let mut iter_users = new_message.mentions.iter();
while user_mentioned.len() < MINIMUM_MENTIONS {
@ -274,7 +273,7 @@ async fn log_mentions(ctx: Context, new_message: &Message) -> CommandResult {
while user_mentioned.len() < MINIMUM_MENTIONS {
if let Some(r) = iter_roles.next() {
for member in members.iter() {
if let Some(roles) = member.roles(&ctx).await {
if let Some(roles) = member.roles(&ctx) {
if roles.iter().any(|role| role.id.0 == r.0) {
log::debug!("{:?}", member);
user_mentioned.insert(member.user.id.0);
@ -345,7 +344,7 @@ async fn normal_message(_ctx: &Context, msg: &Message) {
}
#[hook]
async fn dispatch_error(ctx: &Context, msg: &Message, error: DispatchError) {
async fn dispatch_error(ctx: &Context, msg: &Message, error: DispatchError, command_name: &str) {
debug!("Dispatch error : {:?}", error);
match error {
DispatchError::Ratelimited(seconds) => {

View File

@ -14,7 +14,7 @@ impl Presences {
pub(crate) async fn next(&mut self, ctx: &Context) -> Option<Activity> {
let res: Activity = match self.index {
0 => Activity::listening("?"),
1 => Activity::listening(&format!("{} servers", ctx.cache.guild_count().await)),
1 => Activity::listening(&format!("{} servers", ctx.cache.guild_count())),
2 => Activity::playing("praising the borrow checker"),
_ => unimplemented!(),
};

View File

@ -4,19 +4,19 @@ use serenity::{
model::{guild::Member, Permissions},
};
pub(crate) async fn has_permission(
pub(crate) fn has_permission(
ctx: &Context,
member: &Member,
permissions: &[Permissions],
) -> CommandResult<bool> {
let p = member.permissions(ctx).await?;
let p = member.permissions(ctx)?;
for perm in permissions {
if p.contains(*perm) {
return Ok(true);
}
}
let roles = member.roles(ctx).await.unwrap();
let roles = member.roles(ctx).unwrap();
for role in roles {
for perm in permissions {
if role.has_permissions(*perm, false) {