【问题标题】:Is it possible to create a function to shortcut module functions?是否可以创建一个函数来快捷模块函数?
【发布时间】:2023-02-04 20:17:53
【问题描述】:
@BOT.message_handler(commands=['drink'])
def drink(message):
    try:
        BOT.send_message(message.chat.id, f'I added {message.text.split(" ", 2)[1]} to your daily intake for today, {fecha_excel}!')

    except IndexError:
        BOT.send_message(message.chat.id, 'IndexError')

我基本上想创建一个函数来缩短“BOT.send_message(message.chat.id,”部分,因为它总是相同的(至少对于这个项目而言)

我尝试在(处理程序?方法?@thingy)中创建此函数:

def send(message): BOT.send_message(message.chat.id, message)

然后在 drink() 函数中,将其更改为:

@BOT.message_handler(commands=['drink'])
def drink(message):
    try:
        send(f'I added {message.text.split(" ", 2)[1]} to your daily intake for today, {fecha_excel}!')

    except IndexError:
        send('IndexError')

这是行不通的,因为它不需要字符串而是“聊天”对象(如果我对错误消息的理解正确的话),但是有什么方法可以让它工作吗? 这个项目应该相当简单和简短,所以我不会浪费太多时间输入“BOT.send_message(message.chat.id,”),但将来它可能会节省我一些时间:)

【问题讨论】:

    标签: python telegram


    【解决方案1】:

    您无法完全避免使用messagemessage.chat.id。你能做的最好的(最短的)是:

    def respond(message, text):
       BOT.send_message(message.chat.id, text)
    
    @BOT.message_handler(commands=['drink'])
    def drink(message):
        try:
            respond(message, f'I added {message.text.split(" ", 2)[1]} to your daily intake for today, {fecha_excel}!')
        except IndexError:
            respond(message, 'IndexError')
    

    虽然,Message 没有.reply_text(text) 吗?

    【讨论】:

      【解决方案2】:

      您可以修改辅助函数以采用两个参数,chat_idtext

      def send(chat_id, text):
          BOT.send_message(chat_id, text)
      

      然后在drink函数中,改成:

      @BOT.message_handler(commands=['drink'])
      def drink(message):
          try:
              send(message.chat.id, f'I added {message.text.split(" ", 2)[1]} to your daily intake for today, {fecha_excel}!')
      
          except IndexError:
              send(message.chat.id, 'IndexError')
      

      现在使用辅助函数 send 将消息发送到具有给定聊天 ID 和文本的聊天。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 2020-07-18
        相关资源
        最近更新 更多