파이썬으로 텔레그램 봇 만들기

8848 단어 telegrampythonbots

안녕하세요 여러분😍



봇 텔레그램을 만들어 봅시다python


오늘은 무엇을 만들까요?



이 글에서는 파이썬을 사용하여 밈 이미지를 보내는 텔레그램 봇을 만듭니다.
또한 이 기사에서는 인라인 키보드를 통합하여 경험을 단순화하는 방법을 보여줍니다.
다음은 목차입니다.



First, if you don't have an account on the telegram you should make an account (it's very simple)


전보 측면(단계)



전보 다운로드
  • windows,linux
  • mac os
  • android
  • IPhone

  • 로그인 또는 등록



    이 비디오는 로그인 또는 등록에 도움이 될 수 있습니다.
    ( )

    BotFather를 통해 봇 만들기



    텔레그램 로그인 후
  • BothFather에 대해 검색


  • 시작을 클릭하고 선택/newbot

  • It must end in bot. Like this, for example: memeBot or meme_bot.


  • 새 봇을 만든 후 텔레그램에서 API_TOKEN를 보냅니다.

  • Please keep it and never give it to anyone



    코드 사이드


    환경 만들기



    ( )

    파이썬 라이브러리 설치



    pip install python-telegram-bot
    

    If you can't install this library check this video



    ( )

    Hello World를 보내는 첫 번째 줄을 작성합니다.



    라인이 아니라 라인중 일부입니다🤣 거짓말을 하고 싶지는 않았지만 이 작은 코드 라인😉

    from telegram.ext import Updater , CommandHandler,CallbackContext
    from telegram.update import Update
    API_TOKEN="put your API here"
    updater = Updater(API_TOKEN, use_context=True)
    def start(update: Update, context: CallbackContext):
        update.message.reply_text("hello world")
    
    updater.dispatcher.add_handler(CommandHandler("start", start))
    updater.start_polling()
    
    

    API_TOKEN 봇을 제어하고 코드 작성을 시작합니다.
    Updater 그 목적은 Telegram에서 업데이트를 수신하여 해당 발송자에게 전달하는 것입니다. 또한 별도의 스레드에서 실행되므로 사용자는 예를 들어 명령줄에서 봇과 상호 작용할 수 있습니다.
    update 개체에 발생한 이벤트에 대한 정보가 포함되어 있습니다. & 이 개체는 들어오는 업데이트를 나타냅니다.
    start 사용자가 시작 명령을 클릭하면 Hello World를 보내는 이 기능

    위 코드의 출력





    meme 폴더 읽기 기능 추가




    import os
    def readFolder():
    
        yourpath = "file path"
        lis=[]
    
        for root, dirs, files in os.walk(yourpath, topdown=False):
            for name in files:
                lis.append(os.path.join(root, name))
        return lis[1]
    print(readFolder())
    


    폴더에서 임의의 이미지를 선택하는 임의 기능 추가




    import os
    import random
    def readFolder():
    
        random_=random.randint(0,total image)
        yourpath = "file path"
        lis=[]
        for root, dirs, files in os.walk(yourpath, topdown=False):
            for name in files:
                lis.append(os.path.join(root, name))
        return lis[random_]
    print(readFolder())
    



    밈 쪽



    이제 meme 이미지를 추가해야 합니다. 폴더를 만들고 이 폴더에서 파일을 읽을 수 있도록 만들겠습니다function.

    1. Google 드라이브에서 이 링크를 엽니다. +3000 meme 이미지가 있습니다. 여기를 클릭하세요.



    2. 다운로드



    3. 이 단락으로 이동하여 폴더 읽기 기능을 추가합니다.



    봇을 통해 밈 보내기



    이제 우리는 meme을 보내는 코드를 작성할 것입니다.
    가자😊

    import random
    import os
    from telegram.chataction import ChatAction
    from time import sleep
    from telegram.ext import Updater,CommandHandler,CallbackQueryHandler,CallbackContext,MessageHandler,Filters
    from telegram.update import Update
    from telegram.ext.updater import Updater
    
    yourpath = "file path"
    lis=[]
    
    for root, dirs, files in os.walk(yourpath, topdown=False):
        for name in files:
            lis.append(os.path.join(root, name))
    print("loading.....") 
    API_KEY='API_KEY'
    
    def start_commend(update: Update, context: CallbackContext):
        """
        message to handle any "Option [0-9]" Regrex.
        """
        context.bot.send_chat_action(chat_id=update.effective_chat.id, action=ChatAction.TYPING)
        chat_id = update.message.chat_id
        sleep(1)
        n=random.randint(0,3)
        file=lis[n]
    
        context.bot.send_photo(chat_id, photo=open(file, 'rb'))
    
    def main():
        updaters=Updater(API_KEY,use_context=True)
        dp=updaters.dispatcher
        dp.add_handler(CommandHandler("start",start_commend))
        updaters.start_polling()
        updaters.idle()
    main()
    



    context.bot.send_chat_action(chat_id=update.effective_chat.id, action=ChatAction.UPLOAD_PHOTO)
    
    **line 22** to add action in chat "Uploading photo"
    



    인라인 키보드 추가



    인라인 키보드
    경우에 따라 채팅에 메시지를 보내지 않는 것이 좋습니다. 예를 들어 사용자가 설정을 변경하거나 결과를 넘길 때. 이 경우 자신이 속한 메시지에 직접 통합된 InlineKeyboards를 사용할 수 있습니다.

    대신 인라인 키보드는 콜백 버튼, URL 버튼, 인라인 버튼으로 전환 등 보이지 않는 곳에서 작동하는 버튼을 지원합니다.

    예시:



    인라인 키보드 기능 추가




    import random
    import os
    from telegram.chataction import ChatAction
    from time import sleep
    from telegram.ext import Updater,CommandHandler,CallbackQueryHandler,CallbackContext,MessageHandler,Filters
    from telegram import ReplyKeyboardMarkup,ReplyKeyboardRemove
    from telegram.update import Update
    from telegram.ext.updater import Updater
    from telegram.replykeyboardremove import ReplyKeyboardRemove
    
    yourpath = file_path
    lis=[]
    
    for root, dirs, files in os.walk(yourpath, topdown=False):
        for name in files:
            lis.append(os.path.join(root, name))
    print("loading.....") 
    API_KEY=API_KEY
    
    
    def start_commend(update: Update, context: CallbackContext):
        kd_layout=[["send generate meme"]]
        kbds = ReplyKeyboardMarkup(kd_layout)
        update.message.reply_text(text="""press on "send generate meme" """, reply_markup=kbds)
    def echo(update: Update, context: CallbackContext):
        """
        message to handle any "Option [0-9]" Regrex.
        """
        context.bot.send_chat_action(chat_id=update.effective_chat.id, action=ChatAction.TYPING)
        chat_id = update.message.chat_id
        sleep(1)
        n=random.randint(0,3)
        sleep(1)
        file=lis[n]
        if update.message.text=="send generate meme":
    
            context.bot.send_photo(chat_id, photo=open(file, 'rb'))
    
    def main():
        updaters=Updater(API_KEY,use_context=True)
        dp=updaters.dispatcher
        dp.add_handler(CommandHandler("start",start_commend))
        dp.add_handler(MessageHandler(Filters.regex(r"."), echo))
        updaters.start_polling()
        updaters.idle()
    main()
    

    kd_layout 이 변수는 send generate meme라는 인라인 키보드를 추가하여 다른 인라인 키보드를 만들고 파이썬에서 2D array와 같은 배열을 만들 수 있습니다.

    index: 0, 첫 번째 옵션 index: 1 , 이 접근 방식에서 인라인 키보드의 두 번째 옵션 있음

    예: kbd_layout = [['reaction', 'video'], ['image', 'joke'],['random']]
    결과:


    보드를 사용자 정의하는 방법





    이 문서를 작성해 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기