skip to Main Content

I have this working code:

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

updater = Updater('token')

def hello(update: Update, context: CallbackContext) -> None:
    update.message.reply_text('Hello!')

updater.dispatcher.add_handler(CommandHandler('hello', hello))

updater.start_polling()
updater.idle()

I wish to have a separate file for each function and have a main.py where I import them.

So I head to create a f1.py with just this:

def hello(update: Update, context: CallbackContext) -> None:
    update.message.reply_text('Hello!')

Then import it into a main.py with

from f1 import hello
hello()

Obviously, this is not working (missing arguments). How do I do it correctly?

2

Answers


  1. For more informations, here is a good source for import own modules:

    https://docs.python.org/3/tutorial/modules.html

    Login or Signup to reply.
  2. Your main.py and f1.py are fine, but on updater.dispatcher of your main.py something is missing. Try this:

    from telegram import Update
    from telegram.ext import Updater, CommandHandler, CallbackContext
    
    #On my bots I prefer to import the entire module than a function from a module,
    #because I usually have users.py (all functions for users), clients.py (all 
    #functions for clients), devs.py (all functions for developer's team) and so on
    import f1
    
    updater = Updater('token')
    
    #Calling a function from a module must have a callback, as shown bellow
    updater.dispatcher.add_handler(CommandHandler('hello', callback = f1.hello))
    
    updater.start_polling()
    updater.idle()
    

    Try this and let me know if it worked for you!

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search