macosterminalbashgroupme

How do I create a .bash_profile alias for a GroupMe bot's message command


I have a GroupMe bot that can send messages to the chat it is assigned to in this format:

curl -d '{"text" : "text", "bot_id" : "(REDACTED)"}' https://api.groupme.com/v3/bots/post

So, instead of typing up this monstrosity every time I wanted to send a message, I decided to create an alias for it.

Here is what I attempted to use in my .bash_profile for this:

alias groupmessage=groupmessagefunction
groupmessagefunction() { curl -d '{"text" : $1, "bot_id" : "(REDACTED)"}' https://api.groupme.com/v3/bots/post; }

Could anyone inform me what the correct formatting would be to get this to work? Thanks!

Update 1:

I now have my code as follows:

v="bot_id_string"
alias groupmessage=groupmessagefunction
groupmessagefunction() { curl -d '{"text" : '"$1"', "bot_id" : '"$v"'}' https://api.groupme.com/v3/bots/post; }

I would like to point out that what I am trying to accomplish is type in something like:

groupmessage "hello"

or

groupmessage hello

Then, it will send out the following command:

curl -d '{"text" : "hello", "bot_id" : "bot_id_string"}' https://api.groupme.com/v3/bots/post

I hope this helps clarify this question if any misunderstanding occurred.


Solution

  • Now, I hope this will be the solution for you:

    v=bot_id
    curl -d '{"text" : "Test", "'$v'" : "(REDACTED)"}' api.groupme.com/v3/bots/post
    

    You have to use ' ' around $v --> '$v' because this will allow bash to evaluate $v inside curl -d ' ... ' .

    Answer for your Update 1

    As I see it would be the better way to use eval command:

    v="bot_id_string"
    alias groupmessage=groupmessagefunction
    groupmessagefunction() {
        a="curl -d '{\"text\" : \"$1\", \"bot_id\" :  \"$v\"}' https://api.groupme.com/v3/bots/post"
        echo "$a"    # this echo just for checking
        eval "$a"; }
    
    groupmessage "Hello is it working now ?"