RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1098526
Accepted
Andrey Dolgopolov
Andrey Dolgopolov
Asked:2020-03-23 19:06:22 +0000 UTC2020-03-23 19:06:22 +0000 UTC 2020-03-23 19:06:22 +0000 UTC

制作一个按钮处理程序来调用该函数。那些。单击按钮时,该函数应运行。遥控机器人

  • 772

有一个问题,唉,我无法应付。我有 2 个文件,主要在哪里可以找到机器人的主要代码和按钮,以及在哪里检查和注册用户。如何使当您单击主文件中的“Employer”按钮(第 128 行)时,注册一个名为 send_welcome_employer(第 47 行)的函数。主要的

from telegram import Update, ReplyKeyboardMarkup, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, ConversationHandler
import mysql.connector
from telegram.ext import Updater, CommandHandler
from config import TOKEN
import requests, telebot, logging, sys
from telebot import types, apihelper
from mysql.connector import errorcode
import mysql.connector




try:
    mydb = mysql.connector.connect(
        host="host",
        user="user",
        passwd="passwd",
        port="port",
        database="database"
    )
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("Что-то не так с вашим именем пользователя или паролем")
        sys.exit()
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("База данных не существует")
        sys.exit()
    else:
        print(err)
        sys.exit()

mycursor = mydb.cursor()
sql = "SELECT COUNT(*) FROM users_employer"
mycursor.execute(sql)
rows = mycursor.fetchall()
number_registered_employers = rows[0][0]  # сколько человек зарегистрировано(Работодатели)
sql = "SELECT COUNT(*) FROM users_workers"
mycursor.execute(sql)
rows = mycursor.fetchall()
number_registered_workers = rows[0][0]  # сколько человек зарегистрировано(Работодатели)
sql = "SELECT COUNT(*) FROM applications"
mycursor.execute(sql)
rows = mycursor.fetchall()
number_applications = rows[0][0]  # сколько человек зарегистрировано(Работодатели)

logging.basicConfig(format='[LINE:%(lineno)d]# - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
bot = telebot.TeleBot(TOKEN)
id_group = -1001159001919  # 756515243#
user_data = {}


class User:
    def __init__(self, city):
        self.city = city

        keys = ['phone', 'date_work_start',
                'date_work_finish', 'time_work', 'place_work',
                'quantity_people', 'type_payment', "much_pay"]

        for key in keys:
            self.key = None


FIRST, registration_button, setting_button, main_menu_button, \
post_requests_button, feedback_button= range(6)

def start(update, context):

    user = update.message.from_user
    logger.info("Пользователь %s запустил команду start.", user.last_name + user.first_name)
    img = open('D:\Photo\wallapper\\17706.jpg', 'rb')
    bot.send_photo(update.message.chat.id, img)
    keyboard = [
        [InlineKeyboardButton('Зарегистрироваться', callback_data=str(registration_button)),
         InlineKeyboardButton('Настройка', callback_data=str(setting_button))],
        [InlineKeyboardButton('Заявка', callback_data=str(post_requests_button))],
        [InlineKeyboardButton('Обратная связь', callback_data=str(feedback_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text("Ура! Вы - в главном меню!\n Добро пожаловать в бота для поиска работы, "
                           "для работодателей представляеться прекрасная возможность в короткий срок "
                           "найти ответсвенных работников для проведения скорых работ. В свою очередь для "
                           "работников представляеться возможность в короткий срок заработать\n---\n🔘Работодателей: "
                           + str(number_registered_employers) + "\n🔘Работников: " + str(number_registered_workers) +
                           "\n🔘Количество размещенных заказов: " + str(number_applications) +
                           "\n---\nДля начала работы нажмите одну из кнопок ниже:", reply_markup=reply_markup)
    return FIRST


def start_over(update, context):  # Запрашивать тот же текст и клавиатуру, что и` start`, но не как новое сообщение
    bot = context.bot
    img = open('D:\\Photo\\wallapper\\17706.jpg', 'rb')
    bot.send_photo(update.message.chat.id, img)
    keyboard = [
        [InlineKeyboardButton('Зарегистрироваться', callback_data=str(registration_button)),
         InlineKeyboardButton('Настройка', callback_data=str(setting_button))],
        [InlineKeyboardButton('Заявка', callback_data=str(post_requests_button))],
        [InlineKeyboardButton('Обратная связь', callback_data=str(feedback_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text("Ура! Вы - в главном меню!\n Добро пожаловать в бота для поиска работы, "
                              "для работодателей представляеться прекрасная возможность в короткий срок "
                              "найти ответсвенных работников для проведения скорых работ. В свою очередь для "
                              "работников представляеться возможность в короткий срок заработать\n---\n🔘Работодателей: "
                              + str(number_registered_employers) + "\n🔘Работников: " + str(number_registered_workers) +
                              "\n🔘Количество размещенных заказов: " + str(number_applications) +
                              "\n---\nДля начала работы нажмите одну из кнопок ниже:", reply_markup=reply_markup)
    return FIRST



def registration_menu(update, context):  # при нажатии на первую кнопку (Зарегистрироваться)
    query = update.callback_query
    bot = context.bot
    keyboard = [
        [InlineKeyboardButton("Работодатель", callback_data=str(" ")), # СТРОКА 128
         InlineKeyboardButton("Работник", callback_data=str(" "))],
        [InlineKeyboardButton("Вернуться в главное меню", callback_data=str(main_menu_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.edit_message_text(
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        text="Выбирете кто вы, для регистрации в бд ",
        reply_markup=reply_markup
    )
    return FIRST


def setting_menu(update, context):  # при нажатии на вторую кнопку (Настройка)
    query = update.callback_query
    bot = context.bot
    keyboard = [
        [InlineKeyboardButton("Данные о себе", callback_data=str(" ")),
         InlineKeyboardButton("Данные вашей заявки", callback_data=str(" "))],
        [InlineKeyboardButton("Вернуться в главное меню", callback_data=str(main_menu_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.edit_message_text(
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        text="Что вы хотите изменить??",
        reply_markup=reply_markup
    )
    return FIRST


def post_requests_menu(update, context):  # при нажатии на третью кнопку (Разместить объявление)
    query = update.callback_query
    bot = context.bot
    keyboard = [
        [InlineKeyboardButton("Вернуться в главное меню", callback_data=str(main_menu_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.edit_message_text(
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        text="ТУТ ДОЛЖНА БЫТЬ ФОРМА ДЛЯ РАЗМЕЩЕНИЯ ОБЪЯВЛЕНИЯ",
        reply_markup=reply_markup
    )
    return FIRST


def feedback_menu(update, context):  # при нажатии на третью кнопку (Разместить объявление)
    query = update.callback_query
    bot = context.bot
    keyboard = [
        [InlineKeyboardButton("Вернуться в главное меню", callback_data=str(main_menu_button))]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.edit_message_text(
        chat_id=query.message.chat_id,
        message_id=query.message.message_id,
        text="Напишите нам, чего не хватает в боте 🙌 \
                Мы всегда рады обратной связи от неравнодушных пользователей!\
                Здесь вы можете поделиться позитивным, негативным опытом, предложить сферы деятельности, категории, параметры фильтрации и т.д.",
        reply_markup=reply_markup
    )
    return FIRST


def error(update, context):
    logger.warning('Обновление "%s" вызвало ошибку "%s"', update, context.error)



def main():
    updater = Updater(TOKEN, use_context=True)
    dp = updater.dispatcher
    # ^ означает "начало строки"
    # $ означает "конец строки"
    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
            FIRST: [CallbackQueryHandler(registration_menu, pattern='^' + str(registration_button) + '$'),
                    CallbackQueryHandler(setting_menu, pattern='^' + str(setting_button) + '$'),
                    CallbackQueryHandler(post_requests_menu, pattern='^' + str(post_requests_button) + '$'),
                    CallbackQueryHandler(feedback_menu, pattern='^' + str(feedback_button) + '$'),
                    CallbackQueryHandler(start_over, pattern='^' + str(main_menu_button) + '$')]
        },
        fallbacks=[CommandHandler('start', start)]
    )

    dp.add_handler(conv_handler)
    dp.add_error_handler(error)
    updater.start_polling()



if __name__ == '__main__':
    main()

登记

import requests, telebot, logging, sys
from telebot import types, apihelper
from mysql.connector import errorcode
import mysql.connector

try:
    mydb = mysql.connector.connect(  # даныне бд
        host="host",
        user="user",
        passwd="passwd",
        port="port",
        database="database"
    )
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("Что-то не так с вашим именем пользователя или паролем")
        sys.exit()
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("База данных не существует")
        sys.exit()
    else:
        print(err)
        sys.exit()

mycursor = mydb.cursor()
bot = telebot.TeleBot('909567963:AAEiKOOZkQ8dCeyGLPYd1EV6Uy-m1AAmEsQ')
user_data = {}

@bot.message_handler(commands=['help'])
def help_list(message):
    a = ['/help ' + 'Информация\n', '/reg_employer ' + 'Регистрация работодателя\n', '/reg_workers '+'Регистрация работника']
    for i in a:
        bot.send_message(message.chat.id, i)

class User:
    def __init__(self, first_name):
        self.first_name = first_name
        self.last_name = ''
        self.middle_name = ''
        self.phone_number = ''
        self.subjects_civil_law = ''
        self.region = ''
        self.services_provided = ''
        self.age = ''

@bot.message_handler(commands=['reg_employer'])  # Работодатель 

def send_welcome_employer(message):# СТРОКА 47
    user_id = message.from_user.id
    list = []
    sql = "SELECT user_id FROM users_employer "
    mycursor.execute(sql)
    rows = mycursor.fetchall()
    for row in rows:
        list.append(row[0])
    if user_id not in list:
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(message.chat.id, "Введите Ваше имя: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_lastname_step_employer)
    else:
        sql = "SELECT first_name, last_name FROM users_employer WHERE user_id LIKE %s"
        val = (user_id,)
        mycursor.execute(sql, val)
        rows = mycursor.fetchall()
        for row in rows:
            first_name = row[0]
            last_name = row[1]
        bot.send_message(message.chat.id, "Вы уже зарегистрированы, " + first_name + " " + last_name)


def process_lastname_step_employer(message):
    try:
        user_id = message.from_user.id
        user_data[user_id] = User(message.text)
        user = user_data[user_id]

        msg = bot.send_message(message.chat.id, "Введите Вашу фамилию: ")
        bot.register_next_step_handler(msg, process_middlename_step_employer)
    except Exception as e:
        bot.reply_to(message, "ooooooooooooops ")


def process_middlename_step_employer(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.last_name = message.text

        msg = bot.send_message(message.chat.id, "Введите Ваше отчество: ")
        bot.register_next_step_handler(msg, process_phonenumber_step_employer)
    except Exception as e:
        bot.reply_to(message, 'ooooooooooooops')


def process_phonenumber_step_employer(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.middle_name = message.text

        msg = bot.send_message(message.chat.id, "Введите Ваш номер телефона: ")
        bot.register_next_step_handler(msg, process_subjects_civil_law_step_employer)
    except Exception as e:
        bot.reply_to(message, 'ooooooooooooops:')


def process_subjects_civil_law_step_employer(message):
    try:
        a = int(message.text)
        if len(str(a)) == 11:
            user_id = message.from_user.id
            user = user_data[user_id]
            user.phone_number = message.text

            markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
            itembtn1 = types.KeyboardButton('Физическое лицо')
            itembtn2 = types.KeyboardButton('Юридическое лицо')
            markup.add(itembtn1, itembtn2)

            msg = bot.send_message(message.chat.id, "Укажите вы являетесь юридическим или физическим лицом: ",
                                   reply_markup=markup)
            bot.register_next_step_handler(msg, process_region_step_employer)
        else:
            bot.send_message(message.chat.id)
            bot.register_next_step_handler(process_subjects_civil_law_step_employer)
    except Exception as e:
        msg = bot.reply_to(message, 'Не являеться номером телефона. Пожалуйста введите номер телефона.')
        bot.register_next_step_handler(msg, process_subjects_civil_law_step_employer)


def process_region_step_employer(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.subjects_civil_law = message.text
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(message.chat.id, "Укажите Ваш город: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_services_provided_step_employer)
    except Exception as e:
        msg = bot.reply_to(message, 'Вы ввели что-то не верное')
        bot.register_next_step_handler(msg, process_region_step)


def process_services_provided_step_employer(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.region = message.text

        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        itembtn1 = types.KeyboardButton('Строительство')
        itembtn2 = types.KeyboardButton('Проектирование')
        itembtn3 = types.KeyboardButton('Программирование')
        itembtn4 = types.KeyboardButton('Оказание услуг в сфере обслуживания')
        itembtn5 = types.KeyboardButton('Грузовые перевозки')

        markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5)

        msg = bot.send_message(message.chat.id, "Каким видом деятельности вы занимаетесь: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_last_step_employer)
    except Exception as e:
        bot.reply_to(message, 'oooops')


def process_last_step_employer(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.services_provided = message.text
        markup = types.ReplyKeyboardRemove(selective=False)
        sql = "INSERT INTO users_employer (first_name, last_name, middle_name, phone_number, subjects_civil_law, region, services_provided, user_id) \
               VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
        val = (
            user.first_name, user.last_name, user.middle_name, user.phone_number, user.subjects_civil_law, user.region,
            user.services_provided, user_id)
        mycursor.execute(sql, val)
        mydb.commit()
        bot.send_message(message.chat.id,
                         "Вы успешно зарегестрированны," + " " + user.first_name + " " + user.middle_name,
                         reply_markup=markup)
    except Exception as e:
        bot.send_message(message, "ooooooooooooops")






@bot.message_handler(commands=['reg_workers'])
def send_welcome(message):
    user_id = message.from_user.id
    list = []
    sql = "SELECT user_id FROM users_workers "
    mycursor.execute(sql)
    rows = mycursor.fetchall()
    for row in rows:
        list.append(row[0])
    if user_id not in list:
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(message.chat.id, "Введите Ваше имя: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_lastname_step)
    else:
        sql = "SELECT first_name, last_name FROM users_workers WHERE user_id LIKE %s"
        val = (user_id,)
        mycursor.execute(sql, val)
        rows = mycursor.fetchall()
        for row in rows:
            first_name = row[0]
            last_name = row[1]
        bot.send_message(message.chat.id, "Вы уже зарегистрированы, " + first_name + " " + last_name)


def process_lastname_step(message):
    try:
        user_id = message.from_user.id
        user_data[user_id] = User(message.text)
        user = user_data[user_id]

        msg = bot.send_message(message.chat.id, "Введите Вашу фамилию: ")
        bot.register_next_step_handler(msg, process_middlename_step)
    except Exception as e:
        bot.reply_to(message, "ooooooooooooops ")


def process_middlename_step(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.last_name = message.text

        msg = bot.send_message(message.chat.id, "Введите Ваше отчество: ")
        bot.register_next_step_handler(msg, process_phonenumber_step)
    except Exception as e:
        bot.reply_to(message, 'ooooooooooooops')


def process_phonenumber_step(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.middle_name = message.text

        msg = bot.send_message(message.chat.id, "Введите Ваш номер телефона: ")
        bot.register_next_step_handler(msg, process_age_step)
    except Exception as e:
        bot.reply_to(message, 'ooooooooooooops:')


def process_age_step(message):
    try:
        a = int(message.text)
        if len(str(a)) == 11:
            user_id = message.from_user.id
            user = user_data[user_id]
            user.phone_number = message.text

            msg = bot.send_message(message.chat.id, "Укажите Ваш возраст: ")
            bot.register_next_step_handler(msg, process_region_step)
        else:
            bot.send_message(message.chat.id)
            bot.register_next_step_handler(process_age_step)
    except Exception as e:
        msg = bot.reply_to(message, 'Не являеться номером телефона. Пожалуйста введите номер телефона.')
        bot.register_next_step_handler(msg, process_age_step)


def process_region_step(message):
    try:
        int(message.text)
        user_id = message.from_user.id
        user = user_data[user_id]
        user.age = message.text
        markup = types.ReplyKeyboardRemove(selective=False)
        msg = bot.send_message(message.chat.id, "Укажите Ваш город: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_services_provided_step)
    except Exception as e:
        msg = bot.reply_to(message, 'Не являеться номером возрастом. Укажите Ваш возраст:')
        bot.register_next_step_handler(msg, process_region_step)


def process_services_provided_step(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.region = message.text

        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        itembtn1 = types.KeyboardButton('Строительство')
        itembtn2 = types.KeyboardButton('Проектирование')
        itembtn3 = types.KeyboardButton('Программирование')
        itembtn4 = types.KeyboardButton('Оказание услуг в сфере обслуживания')
        itembtn5 = types.KeyboardButton('Грузовые перевозки')

        markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5)

        msg = bot.send_message(message.chat.id, "Каким видом деятельности вы занимаетесь: ", reply_markup=markup)
        bot.register_next_step_handler(msg, process_last_step)
    except Exception as e:
        bot.reply_to(message, 'oooops')


def process_last_step(message):
    try:
        user_id = message.from_user.id
        user = user_data[user_id]
        user.services_provided = message.text
        markup = types.ReplyKeyboardRemove(selective=False)
        sql = "INSERT INTO users_workers (first_name, last_name, middle_name, phone_number, age, region, services_provided, user_id) \
               VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
        val = (
            user.first_name, user.last_name, user.middle_name, user.phone_number, user.age, user.region,
            user.services_provided, user_id)
        mycursor.execute(sql, val)
        mydb.commit()
        bot.send_message(message.chat.id,
                         "Вы успешно зарегестрированны," + " " + user.first_name + " " + user.middle_name,
                         reply_markup=markup)
    except Exception as e:
        bot.send_message(message, "Вы уже зарегестрированны," + " " + user.first_name + " " + user.middle_name)

如果我将 send_welcome_employer 函数直接传递给 callback_data,它会给出错误:“send_welcome_employer() 接受 1 个位置参数,但给出了 2 个”无法理解它传递的参数,所以我只是添加了 *args

А если в send_welcome_employer передать *args, то будет такая ошибка: 'Update' object has no attribute 'from_user' И как тут исправить я не знаю.

Строго не судите, пока только учусь.

python-3.x
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Violet
    2020-03-26T17:42:18Z2020-03-26T17:42:18Z

    если я всё правильно понял из Вашего вопроса, то вот пример:

    файл А:

    import telebot
    from telebot import apihelper
    from telebot import types
    from file_b import test_func
    
    bot = telebot.TeleBot(bot)
    apihelper.proxy = proxy
    
    @bot.message_handler(commands=['start'])
    def some(message):
        keyboard = types.InlineKeyboardMarkup()
        test_button = types.InlineKeyboardButton(text='Тест', callback_data='test_button')
        keyboard.add(test_button)
        bot.send_message(message.chat.id, 'Нажми на кнопку', reply_markup=keyboard)
    
    # Inline keyboard
    @bot.callback_query_handler(func=lambda call: True)
    def callback_inline(call):
        if call.data == 'test_button':
           test_func()  # если нужно передать message используйте test_func(call.message)
    

    файл Б:

    def test_func():
        a = 1 + 1
        return a
    
    • 2

相关问题

  • 如何正确地将列表项添加到 Word 表格中?

  • 内容解析(Python、BeautifulSoup、请求)

  • 脚本不适用于 BeautifulSoup 和请求 (Python3x)

  • 是否可以在 TeleBot 中编辑用户的消息?

  • Pyinstaller 中的交叉编译

  • 如何以(dd.mm)格式获取今天的日期?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5