Added a simple Telegram client
This commit is contained in:
		
							parent
							
								
									dae15a9cc8
								
							
						
					
					
						commit
						81e46be289
					
				
							
								
								
									
										100
									
								
								examples/example02.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								examples/example02.cc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,100 @@
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 * This is a simple Telegram client that can echo a message, piped to its
 | 
			
		||||
 * binary and to set your web hook.
 | 
			
		||||
 *
 | 
			
		||||
 * If you want to use this example to send your web hook to Telegram's
 | 
			
		||||
 * API, change BOT_TOKEN according to your needs and your web server!
 | 
			
		||||
 *
 | 
			
		||||
 * Example:
 | 
			
		||||
 * BOT_TOKEN: Your token given by Telegram's Bot Father!
 | 
			
		||||
 *
 | 
			
		||||
 * To compile do:
 | 
			
		||||
 * g++ -c -o example02.o -I/usr/include/jsoncpp example02.cc
 | 
			
		||||
 * g++ -o example02 example02.o -ltgbotpp
 | 
			
		||||
 *
 | 
			
		||||
 * Run:
 | 
			
		||||
 * echo "Your message" | ./example02  -u <your user id>
 | 
			
		||||
 *
 | 
			
		||||
 * To set your web hook to Telegram's network:
 | 
			
		||||
 * ./example02 -w
 | 
			
		||||
 *
 | 
			
		||||
 * To send a photo to a user or group:
 | 
			
		||||
 * ./example02 -p file:///path/to/pic.jpg -u <user id>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <Telegram/TelegramBot.h>
 | 
			
		||||
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include <termios.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#define WEBHOOK_URL "https://your-domain/cgi-bin/bot.cgi"
 | 
			
		||||
#define BOT_TOKEN "your secret token"
 | 
			
		||||
 | 
			
		||||
// main function
 | 
			
		||||
int main(int argc, char** argv) {
 | 
			
		||||
 | 
			
		||||
	// Process options
 | 
			
		||||
	std::string user_id = ""; // ID of the receiving user
 | 
			
		||||
	std::string filename = ""; // File name of file to  be sent
 | 
			
		||||
 | 
			
		||||
	Telegram::TelegramBot tg(BOT_TOKEN);
 | 
			
		||||
 | 
			
		||||
#ifdef __arm__
 | 
			
		||||
	int c;
 | 
			
		||||
#else
 | 
			
		||||
	char c;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	while ((c = getopt(argc, argv, "wu:p:")) != -1) {
 | 
			
		||||
		switch(c) {
 | 
			
		||||
			case 'u':
 | 
			
		||||
				user_id = (std::string)optarg;
 | 
			
		||||
				break;
 | 
			
		||||
			case 'w':
 | 
			
		||||
				tg.setWebhook(WEBHOOK_URL);
 | 
			
		||||
				return 0;
 | 
			
		||||
				break; // Never reached
 | 
			
		||||
			case 'p':
 | 
			
		||||
				filename = (std::string)optarg;
 | 
			
		||||
				break;
 | 
			
		||||
			case ':':
 | 
			
		||||
				std::cerr << optopt << " without argument" << std::endl;
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (user_id == "") {
 | 
			
		||||
		std::cerr << "No user ID given!" << std::endl;
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (filename != "") {
 | 
			
		||||
		// Currently only photos are supported
 | 
			
		||||
		tg.sendPhoto(filename, user_id);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Read from stdin
 | 
			
		||||
	struct termios t;
 | 
			
		||||
	std::string s = "";
 | 
			
		||||
 | 
			
		||||
	if (tcgetattr(STDIN_FILENO, &t) < 0) {
 | 
			
		||||
		// If we have a text piped in, read from std::cin
 | 
			
		||||
		while(std::cin) {
 | 
			
		||||
			std::string line;
 | 
			
		||||
			std::getline(std::cin, line);
 | 
			
		||||
			s = s + line + "\n";
 | 
			
		||||
		}
 | 
			
		||||
		s.erase(s.end()-1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (s != "") {
 | 
			
		||||
		tg.sendMessage(s, user_id); // Send the message to the user
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user