#!/usr/bin/env python # -*- coding: utf-8 -*- import logging import os import pygame, sys from time import sleep from pygame.locals import * import pygame.camera from telegram.ext import Updater, CommandHandler, MessageHandler, Filters messagge_id_for_update = 0 # Enable logging logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) def start(update, context): """Send a message when the command /start is issued.""" update.message.reply_text('Hi!') def error(update, context): """Log Errors caused by Updates.""" logger.warning('Update "%s" caused error "%s"', update, context.error) def capture(update, context): width = 640 height = 480 #initialise pygame pygame.init() pygame.camera.init() cam = pygame.camera.Camera("/dev/video0",(width,height)) cam.start() #setup window windowSurfaceObj = pygame.display.set_mode((width,height),1,16) pygame.display.set_caption('Camera') #take a picture image = cam.get_image() cam.stop() #display the picture catSurfaceObj = image windowSurfaceObj.blit(catSurfaceObj,(0,0)) pygame.display.update() #save picture pygame.image.save(windowSurfaceObj,'picture.jpg') context.bot.send_photo(chat_id=update.effective_chat.id, photo=open('picture.jpg', 'rb')) def main(): """Start the bot.""" # Create the Updater and pass it your bot's token. # Make sure to set use_context=True to use the new context based callbacks # Post version 12 this will no longer be necessary updater = Updater("YOUR TOKEN HERE", use_context=True) # Get the dispatcher to register handlers dp = updater.dispatcher dp.add_handler(CommandHandler("capture", capture)) # log all errors dp.add_error_handler(error) # Start the Bot updater.start_polling() # Run the bot until you press Ctrl-C or the process receives SIGINT, # SIGTERM or SIGABRT. This should be used most of the time, since # start_polling() is non-blocking and will stop the bot gracefully. updater.idle() if __name__ == '__main__': main()