Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Ash
Discord Bot
Commits
9cd8e23a
Unverified
Commit
9cd8e23a
authored
Feb 05, 2020
by
tec
Browse files
Refactor get_all_role_reaction_message (quicker)
parent
962b963a
Changes
1
Show whitespace changes
Inline
Side-by-side
src/reaction_roles.rs
View file @
9cd8e23a
use
crate
::
config
::{
CONFIG
,
ReactRoleMap
};
use
crate
::
config
::{
ReactRoleMap
,
CONFIG
};
use
crate
::
util
::{
get_react_from_string
,
get_string_from_react
};
use
serenity
::{
client
::
Context
,
...
...
@@ -174,28 +174,28 @@ pub fn sync_all_role_reactions(ctx: Context) {
info!
(
"Role reaction sync complete"
);
}
fn
get_all_role_reaction_message
(
ctx
:
&
Context
,
)
->
Vec
<
(
Message
,
&
'static
ReactRoleMap
,
)
>
{
fn
get_all_role_reaction_message
(
ctx
:
&
Context
)
->
Vec
<
(
Message
,
&
'static
ReactRoleMap
)
>
{
let
guild
=
ctx
.http
.get_guild
(
CONFIG
.server_id
)
.unwrap
();
info!
(
" Find role-react message: guild determined"
);
let
channels
=
ctx
.http
.get_channels
(
*
guild
.id
.as_u64
())
.unwrap
();
info!
(
" Find role-react message: channels determined"
);
channels
.iter
()
.flat_map
(|
channel
|
{
let
ctxx
=
ctx
.clone
();
// since we don't know which channels the messages are in, we check every combination of message and
// channel and ignore the bad matches using .ok() and .filter_map()
CONFIG
.react_role_messages
.iter
()
.filter_map
(
move
|
rrm
|
{
ctxx
.http
.get_message
(
*
channel
.id
.as_u64
(),
*
rrm
.message
.as_u64
())
.ok
()
.map
(|
m
|
(
m
,
&
rrm
.mapping
))
})
})
.collect
()
let
mut
channel_search_indices
:
Vec
<
_
>
=
(
0
..
channels
.len
())
.collect
();
let
mut
results
:
Vec
<
(
Message
,
&
'static
ReactRoleMap
)
>
=
Vec
::
new
();
for
react_role
in
CONFIG
.react_role_messages
.iter
()
{
for
channel_index
in
&
channel_search_indices
{
if
let
Ok
(
msg
)
=
ctx
.http
.get_message
(
*
channels
[
*
channel_index
]
.id
.as_u64
(),
*
react_role
.message
.as_u64
(),
)
{
results
.push
((
msg
,
&
react_role
.mapping
));
// move channel with message to front of index vector
let
channel_index_clone
=
channel_index
.to_owned
();
channel_search_indices
.retain
(|
&
i
|
i
!=
channel_index_clone
);
channel_search_indices
.insert
(
0
,
channel_index_clone
);
break
;
}
}
}
results
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment