Gigi Bayte 2
Gigi Bayte 2

Reputation: 984

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.

Upvotes: 0

Views: 149

Answers (1)

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 ?"

Upvotes: 1

Related Questions