-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Message command context #51
Comments
Another user data field, but initialized and specific for each command invocation separately? Interesting. What would you need this for? |
Yes that's right This would be useful for example to pre-command to do some action in the database to get configs from the guild/user or also to get some cached data referring to the user in question, I believe it would be useful in this sense of specific configs for this case Or something like there was an error in the internal actions of the command but which is not necessarily an error, and then in the pos command it could be treated and sent to the user something formatted in the embed or even some action in the database, but that would be for more complex things And also avoid calls to the database, in case you need some data related to the user in the 3 states of the command |
Hmm. I'd like to avoid adding an additional global type parameter like error or user data, it would cause massive churn. An alternative would be a Also, for the two use cases you mentioned, what do you think of these workarounds?:
|
I think the way you put it is interesting, that The part of the cache I didn't understand very well how it would be, but for example I would use the Data defined globally for this cache would that be? I hadn't really thought of that in the error handling part, I'll use this |
I don't understand the question but maybe this example code helps ctx.set_command_data(5);
let five = *ctx.command_data::<i32>().unwrap();
ctx.set_command_data("hi");
let hi = *ctx.command_data::<&str>().unwrap();
Yes. For example with a |
ctx.set_command_data(5);
let five = *ctx.command_data::<i32>().unwrap();
ctx.set_command_data("hi");
let hi = *ctx.command_data::<&str>().unwrap(); Yes, that was my question, I think this addition would be very interesting And thank you very much for clearing my doubt from the cache that you had commented on. |
Would the API with set_command_data and command_data work for you? If yes, I can implement it |
yes it would work |
Done Implementation involved a bit of jank but it's ok Feel free to test the changes by changing the dependency branch to "develop" temporarily in your Cargo.toml (cargo docs) |
Hello I did some very shallow tests and I liked it a lot, I believe it needs a little polishing on how it works but maybe I can even help with that, this weekend I won't have much time with it but I believe that next week I can help and also do some tests further |
Thank you!
Yeah, specific ideas would be much appreciated |
I believe I could use for example the tokio mutex using async await |
I was reading the lib to help, and I came across your comment about parking lot, and internally tokio uses parking lot so I think it wouldn't have as much additional problem as dependency |
Thanks for helping! I just changed the std mutex to the tokio mutex as you suggested (56ce4fe), so we don't need to consider parking_lot anymore |
Can this issue be closed? |
I believe so, I liked the implementation to my tests apparently it worked well, in case I can help in the future and just let me know |
Ok thanks for your feedback! EDIT: |
Hello, I was scheduled these days and something came to my mind that I believe would be a good addition
A way to have a struct that is initially defined in the before command and goes through all the states, the command check, the command itself and the after command
Something similar to how the bot's global data is set
https://github.com/kangalioo/poise/blob/0fc5d548e32fc7e3c8ea490afe95db00ec17ec24/examples/framework_usage/main.rs#L142-L148
So something like that would be in place of the current pre command
https://github.com/kangalioo/poise/blob/0fc5d548e32fc7e3c8ea490afe95db00ec17ec24/examples/framework_usage/main.rs#L117-L121
I believe that there would have to be a change in how the command context is currently defined, to have the definition of the type that would transit between the command states
https://github.com/kangalioo/poise/blob/0fc5d548e32fc7e3c8ea490afe95db00ec17ec24/examples/framework_usage/main.rs#L13
The text was updated successfully, but these errors were encountered: