Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
맞춤형 생활 개선 로봇입니다
A customizable life embetterment robot.
기타JavaScript · ShellGitHub @hubotio직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗
Note: v10.0.4 accidentally contains the removal of CoffeeScript; v10.0.5 puts it back in Note: v11 removes CoffeeScript and converts this codebase to ESM
Hubot is a framework to build chat bots, modeled after GitHub's Campfire bot of the same name, hubot. He's pretty cool. He's extendable with scripts and can work on many different chat services.
This repository provides a library that's distributed by npm that you
use for building your own bots. See the documentation
for details on getting up and running with your very own robot friend.
In most cases, you'll probably never have to hack on this repo directly if you are building your own bot. But if you do, check out CONTRIBUTING.md
This will create a directory called myhubot in the current working directory.
npx hubot --create myhubot --adapter @hubot-friends/hubot-slack
npx hubot --create myhubot --adapter @hubot-friends/hubot-discord
npx hubot --create myhubot --adapter @hubot-friends/hubot-ms-teams
npx hubot --create myhubot --adapter @hubot-friends/hubot-irc
Review scripts/example.mjs. Create more scripts in the scripts folder.
Hubot includes a deterministic command subsystem for slash-style commands. It is safe by default and does not interfere with legacy hear and respond listeners.
export default (robot) => {
robot.commands.register({
id: 'tickets.create',
description: 'Create a ticket',
aliases: ['ticket new', 'new ticket'],
args: {
title: { type: 'string', required: true },
priority: { type: 'enum', values: ['low', 'medium', 'high'], default: 'medium' }
},
sideEffects: ['creates external ticket'],
handler: async (ctx) => {
return `Created ticket: ${ctx.args.title}`
}
})
}
Invoke with addressing the bot:
@hubot tickets.create --title "VPN down" --priority high@hubot tickets.create title:"VPN down" priority:highCommands that declare side effects will require confirmation before execution.
The user is asked to confirm. They do so like so:
@hubot yes
@hubot no
@hubot cancel
Aliases are for discovery and search only. They do not execute commands or create proposals. They are intent utterances.
Hubot automatically registers a help command that provides command discovery and documentation:
@hubot help # List all commands
@hubot help tickets # Filter commands by prefix
@hubot help search "create ticket" # Search by keyword, alias, description, or example
const results = robot.commands.search('ticket new')
// [{ id: 'tickets.create', score: 100, matchedOn: 'alias' }, ...]
Extend validation with custom argument types:
export default (robot) => {
// Register custom type resolver
robot.commands.registerTypeResolver('project_id', async (value, schema, context) => {
if (!value.startsWith('PRJ-')) {
throw new Error('must start with PRJ-')
}
return value.toUpperCase()
})
// Use it in a command
robot.commands.register({
id: 'projects.deploy',
description: 'Deploy a project',
args: {
projectId: { type: 'project_id', required: true }
},
handler: async (ctx) => {
return `Deploying ${ctx.args.projectId}`
}
})
}
When creating a CommandBus instance, you can configure:
prefix - Command prefix (default: '')proposalTTL - Timeout for pending confirmations in milliseconds (default: 300000 = 5 minutes)logPath - Path to NDJSON event log file (default: .data/commands-events.ndjson)disableLogging - Disable event logging to disk (default: true - logging is disabled by default)permissionProvider - Custom permission checking handler (optional)Control who can execute commands using room-based and role-based permissions.
Restrict command execution to specific chat rooms:
robot.commands.register({
id: 'sensitive.action',
description: 'Admin-only action',
permissions: {
rooms: ['#admin', '#ops'] // Only allowed in these rooms
},
handler: async (ctx) => {
return 'Action executed!'
}
})
Users in other rooms get: Permission denied: command not allowed in this room
Restrict command execution to users with specific roles:
robot.commands.register({
id: 'deploy.production',
description: 'Deploy to production',
permissions: {
roles: ['admin', 'devops'] // Only users with these roles
},
handler: async (ctx) => {
return 'Deploying...'
}
})
To enable role checking, provide a permissionProvider when creating CommandBus:
const commandBus = new CommandBus(robot, {
permissionProvider: {
hasRole: async (user, requiredRoles, context) => {
// Custom logic to check if user has any of the required roles
const userRoles = await fetchUserRoles(user.id)
return requiredRoles.some(role => userRoles.includes(role))
}
}
})
Without a permission provider, role-based permissions are ignored (allow by default). Room-based permissions are always enforced.
See the LICENSE file for license rights and limitations (MIT).