1394 lines
38 KiB
HTML
1394 lines
38 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en"><head>
|
|||
|
<link rel="preload" href="../static/fonts/comfortaa-v30-subset-regular.woff2" as="font" type="font/woff2" crossorigin>
|
|||
|
<link rel="preload" href="../static/fonts/ubuntu-v15-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
|
|||
|
<link rel="preload" href="../static/fonts/ubuntu-v15-subset-500.woff2" as="font" type="font/woff2" crossorigin>
|
|||
|
<link rel="preload" href="../static/img/libera-color.svg" as="image" type="image/svg+xml">
|
|||
|
<meta charset="utf-8">
|
|||
|
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
|||
|
<meta content="width=device-width, initial-scale=1" name="viewport"><!-- Begin Jekyll SEO tag v2.8.0 -->
|
|||
|
<title>Channel Modes | Libera Chat</title>
|
|||
|
<meta name="generator" content="Jekyll v3.9.2" />
|
|||
|
<meta property="og:title" content="Channel Modes" />
|
|||
|
<meta property="og:locale" content="en_GB" />
|
|||
|
<meta name="description" content="Various modes can be set on channels. Use /mode #channel to list current channel modes and /msg chanserv info #channel to list modes set with MLOCK." />
|
|||
|
<meta property="og:description" content="Various modes can be set on channels. Use /mode #channel to list current channel modes and /msg chanserv info #channel to list modes set with MLOCK." />
|
|||
|
<link rel="canonical" href="channelmodes.html" />
|
|||
|
<meta property="og:url" content="https://libera.chat/guides/channelmodes" />
|
|||
|
<meta property="og:site_name" content="Libera Chat" />
|
|||
|
<meta property="og:type" content="article" />
|
|||
|
<meta property="article:published_time" content="2022-10-03T18:36:48+00:00" />
|
|||
|
<meta name="twitter:card" content="summary" />
|
|||
|
<meta property="twitter:title" content="Channel Modes" />
|
|||
|
<meta name="twitter:site" content="@liberachat" />
|
|||
|
<meta property="article:publisher" content="liberachat" />
|
|||
|
<script type="application/ld+json">
|
|||
|
{"@context":"https://schema.org","@type":"TechArticle","dateModified":"2022-10-03T18:36:48+00:00","datePublished":"2022-10-03T18:36:48+00:00","description":"Various modes can be set on channels. Use /mode #channel to list current channel modes and /msg chanserv info #channel to list modes set with MLOCK.","headline":"Channel Modes","url":"https://libera.chat/guides/channelmodes"}</script>
|
|||
|
<!-- End Jekyll SEO tag -->
|
|||
|
<link rel="icon" type="image/svg+xml" href="../static/img/libera-color.svg">
|
|||
|
<link rel="alternate icon" href="../favicon.ico">
|
|||
|
<!-- Stylesheets -->
|
|||
|
<style>/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
|||
|
*,::after,::before{box-sizing:border-box}:root{-moz-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}</style>
|
|||
|
<style>@font-face {
|
|||
|
/* comfortaa-regular - subset */
|
|||
|
font-family: 'Comfortaa';
|
|||
|
src: url('../static/fonts/comfortaa-v30-subset-regular.woff2') format('woff2'), url('../static/fonts/comfortaa-v30-subset-regular.woff') format('woff'), url('../static/fonts/comfortaa-v30-subset-regular.ttf') format('truetype');
|
|||
|
font-style: normal;
|
|||
|
font-weight: 400;
|
|||
|
font-display: swap;
|
|||
|
/* . C L a b e h i r t */
|
|||
|
unicode-range: U+002E, U+0043, U+004C, U+0061-0062, U+0065, U+0068-0069, U+0072, U+0074;
|
|||
|
}
|
|||
|
|
|||
|
@font-face {
|
|||
|
/* ubuntu-regular - latin */
|
|||
|
font-family: 'Ubuntu';
|
|||
|
src: local(''), url('../static/fonts/ubuntu-v15-latin-regular.woff2') format('woff2'), url('../static/fonts/ubuntu-v15-latin-regular.woff') format('woff'), url('../static/fonts/ubuntu-v15-latin-regular.ttf') format('truetype');
|
|||
|
font-style: normal;
|
|||
|
font-weight: 400;
|
|||
|
font-display: swap;
|
|||
|
}
|
|||
|
|
|||
|
@font-face {
|
|||
|
/* ubuntu-500 - subset */
|
|||
|
font-family: 'Ubuntu';
|
|||
|
src: local(''), url('../static/fonts/ubuntu-v15-subset-500.woff2') format('woff2'), url('../static/fonts/ubuntu-v15-subset-500.woff') format('woff'), url('../static/fonts/ubuntu-v15-subset-500.ttf') format('truetype');
|
|||
|
font-style: normal;
|
|||
|
font-weight: 500;
|
|||
|
font-display: swap;
|
|||
|
/* C c e n o t */
|
|||
|
unicode-range: U+0043 U+0063 U+0065 U+006E U+006F U+0074;
|
|||
|
}
|
|||
|
|
|||
|
:root {
|
|||
|
--header-height: 4rem;
|
|||
|
--content-inline-padding: 1.3rem;
|
|||
|
--content-max-width: 80ch;
|
|||
|
/* define our palette for all themes */
|
|||
|
--white: #fff;
|
|||
|
--gray-100: #f3f4f6;
|
|||
|
--gray-200: #e5e7eb;
|
|||
|
--gray-300: #d1d5db;
|
|||
|
--gray-400: #9ca3af;
|
|||
|
--gray-800: #1f2937;
|
|||
|
--gray-900: #111827;
|
|||
|
--brand-purple: #5555ff;
|
|||
|
--brand-pink: #ff55dd;
|
|||
|
/* light-theme vars */
|
|||
|
--c-bg: var(--gray-100);
|
|||
|
--c-bg-secondary: var(--white);
|
|||
|
--c-text: var(--gray-800);
|
|||
|
--c-border: var(--gray-300);
|
|||
|
--c-hl: var(--brand-pink);
|
|||
|
--c-hl-secondary: var(--brand-purple);
|
|||
|
--c-text-on-hl: var(--gray-800);
|
|||
|
--c-text-on-hl-secondary: var(--white);
|
|||
|
}
|
|||
|
|
|||
|
@media (prefers-color-scheme: dark) {
|
|||
|
:root {
|
|||
|
--c-bg: var(--gray-800);
|
|||
|
--c-bg-secondary: var(--gray-900);
|
|||
|
--c-text: var(--gray-200);
|
|||
|
--c-border: var(--gray-400);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
* {
|
|||
|
color: var(--c-text);
|
|||
|
box-sizing: border-box;
|
|||
|
font-family: Ubuntu, sans-serif;
|
|||
|
letter-spacing: .1ch;
|
|||
|
}
|
|||
|
|
|||
|
main *, .hero * {
|
|||
|
line-height: 1.5;
|
|||
|
}
|
|||
|
|
|||
|
body {
|
|||
|
background-color: var(--c-bg);
|
|||
|
min-height: 100vh;
|
|||
|
display: grid;
|
|||
|
grid-template-rows: var(--header-height) min-content auto auto min-content;
|
|||
|
grid-template-columns: 1fr;
|
|||
|
grid-template-areas: "header" "hero" "main" "aside" "footer";
|
|||
|
}
|
|||
|
|
|||
|
a {
|
|||
|
text-decoration: underline;
|
|||
|
text-underline-offset: .05rem;
|
|||
|
}
|
|||
|
|
|||
|
a:hover {
|
|||
|
text-underline-offset: .25rem;
|
|||
|
color: var(--c-hl);
|
|||
|
}
|
|||
|
|
|||
|
h1, h2, h3, h4, h5, h6, p {
|
|||
|
word-break: break-word;
|
|||
|
scroll-margin-block-start: 4.5rem;
|
|||
|
}
|
|||
|
|
|||
|
h1, h2, h3, h4, h5, h6, strong {
|
|||
|
font-weight: 500;
|
|||
|
}
|
|||
|
|
|||
|
em {
|
|||
|
font-style: italic;
|
|||
|
}
|
|||
|
|
|||
|
h1, h2, h3, h4, h5, h6 {
|
|||
|
margin-block-end: 0;
|
|||
|
}
|
|||
|
|
|||
|
h1+*, h2+*, h3+*, h4+*, h5+*, h6+* {
|
|||
|
margin-block-start: 0;
|
|||
|
}
|
|||
|
|
|||
|
main h1 {
|
|||
|
font-size: 2.25rem;
|
|||
|
}
|
|||
|
|
|||
|
main h2 {
|
|||
|
font-size: 1.5rem;
|
|||
|
}
|
|||
|
|
|||
|
main h3 {
|
|||
|
font-size: 1.25rem;
|
|||
|
}
|
|||
|
|
|||
|
main :is(h2, h3, h4, h5, h6) a {
|
|||
|
text-decoration: none;
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
|
|||
|
main :is(h2, h3, h4, h5, h6) a:hover::before {
|
|||
|
content: '#';
|
|||
|
position: absolute;
|
|||
|
left: -1.5ch;
|
|||
|
bottom: 0;
|
|||
|
font-weight: normal;
|
|||
|
font-size: 1rem;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (min-width: 800px) {
|
|||
|
body {
|
|||
|
grid-template-columns: min-content 8fr;
|
|||
|
grid-template-rows: 4rem min-content auto min-content;
|
|||
|
grid-template-areas: "header header" "hero hero" "aside main" "footer footer";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.skiplink {
|
|||
|
z-index: 9999;
|
|||
|
transform: translateY(calc(-100% - 1rem));
|
|||
|
display: block;
|
|||
|
position: absolute;
|
|||
|
height: 4rem;
|
|||
|
padding: var(--content-inline-padding);
|
|||
|
background-color: var(--c-bg);
|
|||
|
border-inline-end: 1px solid var(--c-border);
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
}
|
|||
|
|
|||
|
.skiplink:focus {
|
|||
|
z-index: 9999;
|
|||
|
transform: translateY(0);
|
|||
|
}
|
|||
|
|
|||
|
header {
|
|||
|
grid-area: header;
|
|||
|
height: var(--header-height);
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
background-color: var(--c-bg-secondary);
|
|||
|
position: sticky;
|
|||
|
top: 0;
|
|||
|
z-index: 1000;
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
flex-wrap: nowrap;
|
|||
|
justify-content: space-between;
|
|||
|
}
|
|||
|
|
|||
|
header a {
|
|||
|
text-decoration: none;
|
|||
|
}
|
|||
|
|
|||
|
header .logo {
|
|||
|
display: flex;
|
|||
|
flex-wrap: nowrap;
|
|||
|
align-items: center;
|
|||
|
height: 100%;
|
|||
|
padding-inline-start: var(--content-inline-padding);
|
|||
|
}
|
|||
|
|
|||
|
header .logo img {
|
|||
|
padding-block-end: .3rem;
|
|||
|
}
|
|||
|
|
|||
|
header .logo h1 {
|
|||
|
margin: 0;
|
|||
|
margin-bottom: -.4rem;
|
|||
|
font-size: 1.7rem;
|
|||
|
line-height: 1;
|
|||
|
font-family: Comfortaa, Ubuntu, sans-serif;
|
|||
|
font-weight: bold;
|
|||
|
}
|
|||
|
|
|||
|
header .nav-toggle {
|
|||
|
display: block;
|
|||
|
border-inline-start: 1px solid var(--c-border);
|
|||
|
padding: 0 1rem;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
header nav details summary, header nav a {
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
padding: 1rem;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
cursor: pointer;
|
|||
|
white-space: nowrap;
|
|||
|
}
|
|||
|
|
|||
|
header nav details summary::before {
|
|||
|
content: "►";
|
|||
|
padding-inline-end: .3rem;
|
|||
|
}
|
|||
|
|
|||
|
header nav details[open] summary::before {
|
|||
|
content: "▼";
|
|||
|
}
|
|||
|
|
|||
|
header nav .nav-close {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
|
|||
|
header nav.show .nav-close {
|
|||
|
display: flex;
|
|||
|
}
|
|||
|
|
|||
|
header nav {
|
|||
|
transform: translateY(calc(-100% - 1rem));
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
justify-content: flex-start;
|
|||
|
position: fixed;
|
|||
|
right: 0;
|
|||
|
top: 0;
|
|||
|
bottom: 0;
|
|||
|
background-color: var(--c-bg-secondary);
|
|||
|
min-width: 20rem;
|
|||
|
max-width: 30rem;
|
|||
|
border-inline-start: 1px solid var(--c-border);
|
|||
|
z-index: 10000;
|
|||
|
}
|
|||
|
|
|||
|
header nav.show, header nav:focus-within {
|
|||
|
transform: translateY(0);
|
|||
|
}
|
|||
|
|
|||
|
header nav details summary.highlight, header nav a.highlight {
|
|||
|
background-color: var(--c-hl);
|
|||
|
color: var(--c-text-on-hl);
|
|||
|
font-weight: 500;
|
|||
|
}
|
|||
|
|
|||
|
header nav details summary:hover, header nav a:hover {
|
|||
|
background-color: var(--c-bg);
|
|||
|
}
|
|||
|
|
|||
|
header nav details summary.highlight:hover, header nav a.highlight:hover {
|
|||
|
background-color: var(--c-hl-secondary);
|
|||
|
color: var(--c-text-on-hl-secondary);
|
|||
|
}
|
|||
|
|
|||
|
header nav details {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
|
|||
|
header nav details a {
|
|||
|
padding-inline-start: 2.5rem;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (min-width: 950px) {
|
|||
|
header .nav-toggle, header .nav-close, header nav.show .nav-close {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
header nav {
|
|||
|
transform: initial;
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: flex-end;
|
|||
|
position: initial;
|
|||
|
background-color: initial;
|
|||
|
min-width: unset;
|
|||
|
max-width: unset;
|
|||
|
border-inline-start: none;
|
|||
|
}
|
|||
|
header nav.show, header nav:focus-within {
|
|||
|
transform: initial;
|
|||
|
}
|
|||
|
header nav details summary, header nav a {
|
|||
|
border-block-end: none;
|
|||
|
border-inline-start: 1px solid var(--c-border);
|
|||
|
border-inline-end: 1px solid var(--c-border);
|
|||
|
padding: 0 1rem;
|
|||
|
display: flex;
|
|||
|
margin-inline-start: -1px;
|
|||
|
align-items: center;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
header nav details:last-of-type summary {
|
|||
|
border-inline-end: none;
|
|||
|
}
|
|||
|
header nav details[open] summary {
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
height: calc(100% + 1px);
|
|||
|
}
|
|||
|
header nav details div {
|
|||
|
position: absolute;
|
|||
|
right: 0;
|
|||
|
}
|
|||
|
header nav details div a {
|
|||
|
background-color: var(--c-bg-secondary);
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
padding: 1rem;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
main {
|
|||
|
grid-area: main;
|
|||
|
padding: 0 var(--content-inline-padding);
|
|||
|
max-width: var(--content-max-width);
|
|||
|
min-width: 0;
|
|||
|
width: 100%;
|
|||
|
margin: 2rem auto;
|
|||
|
}
|
|||
|
|
|||
|
nav.article-nav {
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: center;
|
|||
|
}
|
|||
|
|
|||
|
nav.article-nav div {
|
|||
|
width: 33%;
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
|
|||
|
footer {
|
|||
|
grid-area: footer;
|
|||
|
align-self: end;
|
|||
|
background-color: var(--c-bg-secondary);
|
|||
|
border-block-start: 1px solid var(--c-border);
|
|||
|
padding: .5rem var(--content-inline-padding);
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
flex-wrap: wrap;
|
|||
|
justify-content: space-between;
|
|||
|
}
|
|||
|
|
|||
|
footer div {
|
|||
|
line-height: 2;
|
|||
|
}
|
|||
|
|
|||
|
footer div .mobile-hide {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
|
|||
|
footer div a {
|
|||
|
white-space: nowrap;
|
|||
|
}
|
|||
|
|
|||
|
footer div a:not([rel*=license]), footer div .copyright {
|
|||
|
display: block;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (min-width: 800px) {
|
|||
|
footer div {
|
|||
|
line-height: 1.5;
|
|||
|
}
|
|||
|
|
|||
|
footer div:last-of-type {
|
|||
|
padding-inline-start: 1rem;
|
|||
|
}
|
|||
|
|
|||
|
footer div .mobile-hide {
|
|||
|
display: inline;
|
|||
|
}
|
|||
|
|
|||
|
footer div a:not([rel*=license]), footer div .copyright {
|
|||
|
display: initial;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
|
|||
|
<style>aside {
|
|||
|
grid-area: aside;
|
|||
|
background-color: var(--c-bg-secondary);
|
|||
|
/* padding: var(--content-inline-padding); */
|
|||
|
border-block-start: 1px solid var(--c-border);
|
|||
|
width: 100%;
|
|||
|
height: min-content;
|
|||
|
align-self: end;
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
justify-content: flex-start;
|
|||
|
min-width: 30ch;
|
|||
|
overflow-y: auto;
|
|||
|
}
|
|||
|
|
|||
|
aside .title {
|
|||
|
margin-block-end: 0;
|
|||
|
margin-inline: var(--content-inline-padding);
|
|||
|
margin-block-start: 1rem;
|
|||
|
margin-block-end: .5rem;
|
|||
|
font-size: 2rem;
|
|||
|
font-weight: 500;
|
|||
|
}
|
|||
|
|
|||
|
aside details:not(:last-child) {
|
|||
|
border-block-end: 1px solid var(--c-border);
|
|||
|
}
|
|||
|
|
|||
|
aside details summary, aside a {
|
|||
|
padding: 1rem;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
cursor: pointer;
|
|||
|
white-space: nowrap;
|
|||
|
}
|
|||
|
|
|||
|
aside a {
|
|||
|
text-decoration: none;
|
|||
|
}
|
|||
|
|
|||
|
aside details summary::before {
|
|||
|
content: "►";
|
|||
|
padding-inline-end: .3rem;
|
|||
|
}
|
|||
|
|
|||
|
aside details[open] summary::before {
|
|||
|
content: "▼";
|
|||
|
}
|
|||
|
|
|||
|
aside details summary:hover, aside a:hover, aside a.active {
|
|||
|
background-color: var(--c-bg);
|
|||
|
}
|
|||
|
|
|||
|
aside details {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
|
|||
|
aside details a {
|
|||
|
padding-inline-start: 2.5rem;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (min-width: 800px) {
|
|||
|
aside {
|
|||
|
border-block-start: none;
|
|||
|
border-inline-end: 1px solid var(--c-border);
|
|||
|
width: max-content;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
<link rel="stylesheet" href="../static/css/additional-styles.css">
|
|||
|
<script src="../static/js/header-links.js" defer></script>
|
|||
|
</head>
|
|||
|
<body><a class="skiplink" href="channelmodes.html#main">Skip to content</a>
|
|||
|
<header>
|
|||
|
<a class="logo" href="../index.html" aria-label="Libera Chat, back to start page">
|
|||
|
<img alt="" src="../static/img/libera-color.svg" height="48px" data-proofer-ignore>
|
|||
|
<h1>Libera.​Chat</h1>
|
|||
|
</a>
|
|||
|
|
|||
|
<a id="nav-toggle" class="nav-toggle hidden" aria-controls="main-nav"><span>Navigation</span></a>
|
|||
|
|
|||
|
<nav class="" id="main-nav" aria-labelledby="nav-toggle" role="menubar">
|
|||
|
<a id="nav-close" class="nav-close hidden" aria-controls="main-nav"><span>Close</span></a>
|
|||
|
|
|||
|
|
|||
|
<details>
|
|||
|
<summary
|
|||
|
|
|||
|
>About</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../policies.html"
|
|||
|
|
|||
|
><span>Network Policies</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../guidelines.html"
|
|||
|
|
|||
|
><span>Channel Guidelines</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../news.html"
|
|||
|
|
|||
|
><span>Blog & News</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../about.html"
|
|||
|
|
|||
|
><span>About Libera Chat</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../bylaws.html"
|
|||
|
|
|||
|
><span>Bylaws</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../minutes.html"
|
|||
|
|
|||
|
><span>Meeting Minutes</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../annual-reports.html"
|
|||
|
|
|||
|
><span>Annual Reports</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../sponsors.html"
|
|||
|
|
|||
|
><span>Sponsors</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<details>
|
|||
|
<summary
|
|||
|
|
|||
|
>Contribute</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../contributing/donate.html"
|
|||
|
|
|||
|
><span>Donate</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../contributing/sponsor.html"
|
|||
|
|
|||
|
><span>Sponsor Us</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="../contributing/development.html"
|
|||
|
|
|||
|
><span>Development</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<a role="menuitem" href="../chanreg.html"><span>Channel Namespaces</span></a>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<a role="menuitem" href="../guides.html"><span>Guides</span></a>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<a role="menuitem" href="faq.html"><span>FAQ</span></a>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<details>
|
|||
|
<summary
|
|||
|
class="highlight"
|
|||
|
>Connect</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="https://web.libera.chat"
|
|||
|
rel="noopener noreferrer"
|
|||
|
><span>Webchat</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="ircs://irc.libera.chat:6697"
|
|||
|
|
|||
|
><span>irc.libera.chat:6697 (TLS)</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
href="connect.html"
|
|||
|
|
|||
|
><span>How to Connect</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
</nav>
|
|||
|
</header>
|
|||
|
<script async>
|
|||
|
const navToggle = document.querySelector('#nav-toggle')
|
|||
|
const navClose = document.querySelector('#nav-close')
|
|||
|
const mainNav = document.querySelector('#main-nav')
|
|||
|
|
|||
|
// progressive enhancement!
|
|||
|
navToggle.classList.remove('hidden')
|
|||
|
navClose.classList.remove('hidden')
|
|||
|
|
|||
|
navToggle.addEventListener('click', event => {
|
|||
|
event.preventDefault()
|
|||
|
mainNav.classList.toggle('show')
|
|||
|
})
|
|||
|
navClose.addEventListener('click', event => {
|
|||
|
event.preventDefault()
|
|||
|
mainNav.classList.remove('show')
|
|||
|
})
|
|||
|
</script>
|
|||
|
<aside role="menu">
|
|||
|
<span class="title">Guides</span>
|
|||
|
|
|||
|
|
|||
|
<details open>
|
|||
|
<summary>About IRC</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="basics.html"
|
|||
|
><span>Basics of IRC</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="faq.html"
|
|||
|
><span>Frequently Asked Questions</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="clients.html"
|
|||
|
><span>Choosing an IRC client</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
<details open>
|
|||
|
<summary>Helping you connect</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="connect.html"
|
|||
|
><span>Connecting to Libera.Chat</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="webchat.html"
|
|||
|
><span>Using Our Webchat</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="sasl.html"
|
|||
|
><span>Using SASL</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="https://libera.chat/guides/certfp"
|
|||
|
><span>Using CertFP</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
<details open>
|
|||
|
<summary>Using the network</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="registration.html"
|
|||
|
><span>Nickname Registration</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="sendpass.html"
|
|||
|
><span>Resetting your Password</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="cloaks.html"
|
|||
|
><span>Cloaks</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="findingchannels.html"
|
|||
|
><span>Finding Channels</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="channels.html"
|
|||
|
><span>Using Channels</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="usermodes.html"
|
|||
|
><span>User Modes</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
|
|||
|
<details open>
|
|||
|
<summary>Running a channel</summary>
|
|||
|
|
|||
|
<div>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="creatingchannels.html"
|
|||
|
><span>Creating Channels</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
class="active"
|
|||
|
href="channelmodes.html"
|
|||
|
><span>Channel Modes</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="bots.html"
|
|||
|
><span>Network bots</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="catalyst.html"
|
|||
|
><span>Catalysing and De-escalation</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
href="helpers.html"
|
|||
|
><span>Advice for Helpers</span></a>
|
|||
|
|
|||
|
</div>
|
|||
|
</details>
|
|||
|
|
|||
|
</aside>
|
|||
|
<main id="main">
|
|||
|
|
|||
|
<h1>Channel Modes</h1>
|
|||
|
|
|||
|
<p>Various modes can be set on channels. Use <code class="language-plaintext highlighter-rouge">/mode #channel</code> to list current
|
|||
|
channel modes and <code class="language-plaintext highlighter-rouge">/msg chanserv info #channel</code> to list modes set with MLOCK.</p>
|
|||
|
|
|||
|
<p>All channel modes will be lost when a channel becomes empty. Enable GUARD to
|
|||
|
preserve modes.</p>
|
|||
|
|
|||
|
<p>To set a mode, use <code class="language-plaintext highlighter-rouge">/mode #channel +(mode)</code> replacing <code class="language-plaintext highlighter-rouge">(mode)</code> with the letter
|
|||
|
that corresponds to the mode. To unset a mode, use <code class="language-plaintext highlighter-rouge">/mode #channel -(mode)</code></p>
|
|||
|
|
|||
|
<h2 id="available-channel-modes">Available channel modes</h2>
|
|||
|
|
|||
|
<!-- markdownlint-disable MD013 -->
|
|||
|
|
|||
|
<!-- markdownlint-enable MD013 -->
|
|||
|
<!-- markdownlint-disable MD033 MD041 -->
|
|||
|
<p><div class="table"></p>
|
|||
|
|
|||
|
<table>
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
|
|||
|
<th>Mode (name)</th>
|
|||
|
|
|||
|
<th>Description</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>b</code>
|
|||
|
|
|||
|
<br />
|
|||
|
channel ban
|
|||
|
</td>
|
|||
|
<td><p>Takes a <a href="channelmodes.html#masks">mask</a> as a parameter. Users matching the mask are
|
|||
|
prevented from joining or speaking. Sending <code class="language-plaintext highlighter-rouge">/mode #channel +b</code> alone will
|
|||
|
return the current ban list. While in the channel, banned users will be
|
|||
|
unable to send to the channel or change nick.</p>
|
|||
|
|
|||
|
<p>You can append <code class="language-plaintext highlighter-rouge">$#channel</code> to any ban to redirect banned users to
|
|||
|
another channel.</p>
|
|||
|
|
|||
|
<p>For example:
|
|||
|
<code class="language-plaintext highlighter-rouge">/mode #channel +b example!*@*$##fix_your_connection</code> would forward the
|
|||
|
user with nick example to the channel <code class="language-plaintext highlighter-rouge">##fix_your_connection</code>.
|
|||
|
<code class="language-plaintext highlighter-rouge">/mode #channel +b $~a$#channel-unreg</code> would forward unidentified users to
|
|||
|
the channel <code class="language-plaintext highlighter-rouge">#channel-unreg</code>.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>c</code>
|
|||
|
|
|||
|
<br />
|
|||
|
colour filter
|
|||
|
</td>
|
|||
|
<td><p>Strip colour and formatting codes from channel messages.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>C</code>
|
|||
|
|
|||
|
<br />
|
|||
|
block CTCPs
|
|||
|
</td>
|
|||
|
<td><p>Blocks CTCP commands (other than <code class="language-plaintext highlighter-rouge">/me</code> actions).</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>e</code>
|
|||
|
|
|||
|
<br />
|
|||
|
ban exemption
|
|||
|
</td>
|
|||
|
<td><p>Takes a <a href="channelmodes.html#masks">mask</a> as a parameter. Ban exemption matches
|
|||
|
override <code class="language-plaintext highlighter-rouge">+b</code> and <code class="language-plaintext highlighter-rouge">+q</code> bans for all clients it matches, allowing the
|
|||
|
exempted user to join/speak as if they were not banned or quieted.
|
|||
|
This can be useful if it is necessary to ban an entire ISP due to
|
|||
|
persistent abuse, but some users from that ISP should still be allowed in.</p>
|
|||
|
|
|||
|
<p>For example:
|
|||
|
<code class="language-plaintext highlighter-rouge">/mode #channel +bee *!*@*.example.com *!*someuser@host3.example.com $a:JohnDoe</code>
|
|||
|
would block all users from example.com, while still allowing someuser
|
|||
|
from host3 and JohnDoe to join.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>f</code>
|
|||
|
|
|||
|
<br />
|
|||
|
forward
|
|||
|
</td>
|
|||
|
<td><p>Takes a channel name as a parameter. Users who cannot join the channel
|
|||
|
(because of <code class="language-plaintext highlighter-rouge">+i</code>, <code class="language-plaintext highlighter-rouge">+j</code>, <code class="language-plaintext highlighter-rouge">+l</code>, <code class="language-plaintext highlighter-rouge">+S</code>, <code class="language-plaintext highlighter-rouge">+r</code>, see below) are instead sent to
|
|||
|
the given channel. Clients are notified when the forward takes effect.</p>
|
|||
|
|
|||
|
<p>An operator can set <code class="language-plaintext highlighter-rouge">/mode +f #channel2</code> only if they are an op in
|
|||
|
<code class="language-plaintext highlighter-rouge">#channel2</code> or if <code class="language-plaintext highlighter-rouge">#channel2</code> has mode <code class="language-plaintext highlighter-rouge">+F</code> set (see below).</p>
|
|||
|
|
|||
|
<p>Usually you want to set forwards with <code class="language-plaintext highlighter-rouge">MLOCK</code>, because the channel will
|
|||
|
become empty over time and the channel modes are lost. You might also want
|
|||
|
to set <code class="language-plaintext highlighter-rouge">GUARD</code> to prevent the channel from becoming empty. An operator can
|
|||
|
use <code class="language-plaintext highlighter-rouge">MLOCK</code> with <code class="language-plaintext highlighter-rouge">+f</code> only if they have access flag <code class="language-plaintext highlighter-rouge">+s</code> in both channels,
|
|||
|
or if the channel to be forwarded to is <code class="language-plaintext highlighter-rouge">+F</code> and they have <code class="language-plaintext highlighter-rouge">+s</code> in the
|
|||
|
original channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>F</code>
|
|||
|
|
|||
|
<br />
|
|||
|
enable forwarding
|
|||
|
</td>
|
|||
|
<td><p>Allow operators in other channels to forward clients to this channel,
|
|||
|
without requiring ops in the target channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>g</code>
|
|||
|
|
|||
|
<br />
|
|||
|
free invite
|
|||
|
</td>
|
|||
|
<td><p>Anybody in the channel may invite others (using the <code class="language-plaintext highlighter-rouge">/invite</code> command)
|
|||
|
to the channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>i</code>
|
|||
|
|
|||
|
<br />
|
|||
|
invite only
|
|||
|
</td>
|
|||
|
<td><p>Users are unable to join invite-only channels unless they are invited
|
|||
|
or match a <code class="language-plaintext highlighter-rouge">+I</code> entry.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>I</code>
|
|||
|
|
|||
|
<br />
|
|||
|
invite exemption
|
|||
|
</td>
|
|||
|
<td><p>Takes a <a href="channelmodes.html#masks">mask</a> parameter. Matching clients do not need to be invited
|
|||
|
to join the channel when it is invite-only (<code class="language-plaintext highlighter-rouge">+i</code>). Unlike the <code class="language-plaintext highlighter-rouge">/invite</code>
|
|||
|
command, this does not override <code class="language-plaintext highlighter-rouge">+j</code>, <code class="language-plaintext highlighter-rouge">+l</code> and <code class="language-plaintext highlighter-rouge">+r</code>. Only channel operators
|
|||
|
can see <code class="language-plaintext highlighter-rouge">+I</code> changes or see the list with <code class="language-plaintext highlighter-rouge">/mode #channel +I</code>.</p>
|
|||
|
|
|||
|
<p>Commonly used with the $a extban.
|
|||
|
<code class="language-plaintext highlighter-rouge">/mode #channel +I $a:example</code>
|
|||
|
would allow a user identified to services as example to enter #channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>j</code>
|
|||
|
|
|||
|
<br />
|
|||
|
join throttle
|
|||
|
</td>
|
|||
|
<td><p>This mode takes one parameter of the form <code class="language-plaintext highlighter-rouge">n:t</code>, where <code class="language-plaintext highlighter-rouge">n</code> and <code class="language-plaintext highlighter-rouge">t</code> are
|
|||
|
positive integers. Only <code class="language-plaintext highlighter-rouge">n</code> users may join in each period of <code class="language-plaintext highlighter-rouge">t</code> seconds,
|
|||
|
so with e.g. <code class="language-plaintext highlighter-rouge">3:10</code> only 3 users could join within 10 seconds.
|
|||
|
Invited users can join regardless of <code class="language-plaintext highlighter-rouge">+j</code>, but are counted as normal.
|
|||
|
You can use this mode to prevent bot attacks. Observe the average join
|
|||
|
rate of your channel and pick a good value for <code class="language-plaintext highlighter-rouge">+j</code>. This mode could be
|
|||
|
combined with <code class="language-plaintext highlighter-rouge">+f</code> to forward throttled users to an overflow channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>k</code>
|
|||
|
|
|||
|
<br />
|
|||
|
password
|
|||
|
</td>
|
|||
|
<td><p>To enter the channel, you must specify the password on your <code class="language-plaintext highlighter-rouge">/join</code>
|
|||
|
command. Keep in mind that modes locked with ChanServ’s <code class="language-plaintext highlighter-rouge">MLOCK</code> command
|
|||
|
can be seen by anyone recreating the channel; this includes keys.
|
|||
|
Also keep in mind that users being on the channel when <code class="language-plaintext highlighter-rouge">+k</code> is set will
|
|||
|
see the key as well.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>l</code>
|
|||
|
|
|||
|
<br />
|
|||
|
join limit
|
|||
|
</td>
|
|||
|
<td><p>Takes a positive integer parameter. Limits the number of users who can be
|
|||
|
in the channel at the same time.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>m</code>
|
|||
|
|
|||
|
<br />
|
|||
|
moderated
|
|||
|
</td>
|
|||
|
<td><p>Only opped and voiced users can send to the channel. This mode does not
|
|||
|
prevent users from changing nicks.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>n</code>
|
|||
|
|
|||
|
<br />
|
|||
|
prevent external send
|
|||
|
</td>
|
|||
|
<td><p>Users outside the channel may not send messages to it.
|
|||
|
Keep in mind that bans and quiets will not apply to external users.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>p</code>
|
|||
|
|
|||
|
<br />
|
|||
|
private
|
|||
|
</td>
|
|||
|
<td><p>The <code class="language-plaintext highlighter-rouge">KNOCK</code> command cannot be used on the channel, and users will not be
|
|||
|
shown the channel in whois output unless they share the channel with the
|
|||
|
requestor. The channel will still appear in channel lists and <code class="language-plaintext highlighter-rouge">WHO</code> output
|
|||
|
(set channel mode <code class="language-plaintext highlighter-rouge">+s</code> if this is not desired).</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>q</code>
|
|||
|
|
|||
|
<br />
|
|||
|
quiet
|
|||
|
</td>
|
|||
|
<td><p>Takes a <a href="channelmodes.html#masks">mask</a> parameter. Works like <code class="language-plaintext highlighter-rouge">+b</code> (channel ban), but allows
|
|||
|
matching users to join the channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>Q</code>
|
|||
|
|
|||
|
<br />
|
|||
|
block forwarded users
|
|||
|
</td>
|
|||
|
<td><p>Users cannot be forwarded (see <code class="language-plaintext highlighter-rouge">+f</code> above) to a channel with <code class="language-plaintext highlighter-rouge">+Q</code>.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>r</code>
|
|||
|
|
|||
|
<br />
|
|||
|
block unidentified
|
|||
|
</td>
|
|||
|
<td><p>Prevents users who are not identified to services from joining the channel.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>s</code>
|
|||
|
|
|||
|
<br />
|
|||
|
secret
|
|||
|
</td>
|
|||
|
<td><p>This channel will not appear on channel lists or <code class="language-plaintext highlighter-rouge">WHO</code> or <code class="language-plaintext highlighter-rouge">WHOIS</code> output
|
|||
|
unless you are on it.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>S</code>
|
|||
|
|
|||
|
<br />
|
|||
|
TLS-only
|
|||
|
</td>
|
|||
|
<td><p>Only users connected via TLS may join the channel while this mode is set.
|
|||
|
Users already in the channel are not affected.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>t</code>
|
|||
|
|
|||
|
<br />
|
|||
|
ops-topic
|
|||
|
</td>
|
|||
|
<td><p>Only channel operators may set the channel topic.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>T</code>
|
|||
|
|
|||
|
<br />
|
|||
|
block notice
|
|||
|
</td>
|
|||
|
<td><p>Blocks channel notices (other than CTCP replies, see <code class="language-plaintext highlighter-rouge">+C</code>).</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>u</code>
|
|||
|
|
|||
|
<br />
|
|||
|
unfiltered
|
|||
|
</td>
|
|||
|
<td><p>Receive messages that are filtered server side by Libera.Chat based on
|
|||
|
content, usually spam. Set <code class="language-plaintext highlighter-rouge">+u</code> if you want the channel to receive these
|
|||
|
messages. Also see the corresponding <a href="usermodes.html">user mode</a>.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>z</code>
|
|||
|
|
|||
|
<br />
|
|||
|
reduced moderation
|
|||
|
</td>
|
|||
|
<td><p>The effects of <code class="language-plaintext highlighter-rouge">+b</code>, <code class="language-plaintext highlighter-rouge">+q</code>, and <code class="language-plaintext highlighter-rouge">+m</code> are relaxed. For each message, if that
|
|||
|
message would normally be blocked by one of these modes, it is instead
|
|||
|
sent to channel operators (<code class="language-plaintext highlighter-rouge">+o</code>).</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
|
|||
|
<p></div></p>
|
|||
|
<h2 id="restricted-channel-modes">Restricted channel modes</h2>
|
|||
|
|
|||
|
<p>The following channel modes can only be added by Libera.Chat staff.</p>
|
|||
|
|
|||
|
<!-- markdownlint-disable MD013 -->
|
|||
|
|
|||
|
<!-- markdownlint-enable MD013 -->
|
|||
|
<!-- markdownlint-disable MD033 MD041 -->
|
|||
|
<p><div class="table"></p>
|
|||
|
|
|||
|
<table>
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
|
|||
|
<th>Mode (name)</th>
|
|||
|
|
|||
|
<th>Description</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>L</code>
|
|||
|
|
|||
|
<br />
|
|||
|
large ban list
|
|||
|
</td>
|
|||
|
<td><p>Increase maximum number of <code class="language-plaintext highlighter-rouge">+beIq</code> entries.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>P</code>
|
|||
|
|
|||
|
<br />
|
|||
|
permanent
|
|||
|
</td>
|
|||
|
<td><p>Channel does not disappear when empty.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
|
|||
|
<p></div></p>
|
|||
|
<h2 id="masks">Masks</h2>
|
|||
|
|
|||
|
<p><code class="language-plaintext highlighter-rouge">+b</code>, <code class="language-plaintext highlighter-rouge">+e</code>, <code class="language-plaintext highlighter-rouge">+I</code>, and <code class="language-plaintext highlighter-rouge">+q</code> all take a mask to determine which users to match.</p>
|
|||
|
|
|||
|
<p>The common form of a mask is <code class="language-plaintext highlighter-rouge">nick!user@host</code>. The wildcards <code class="language-plaintext highlighter-rouge">*</code> and <code class="language-plaintext highlighter-rouge">?</code> are
|
|||
|
allowed, matching zero-or-more and exactly-one characters, respectively. Bans
|
|||
|
set on IP addresses will apply even if the affected user joins with a resolved
|
|||
|
or cloaked hostname.
|
|||
|
<a href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation">CIDR notation</a>
|
|||
|
is supported in bans.</p>
|
|||
|
|
|||
|
<p>The second form, called extbans, can be used for bans based on user data.
|
|||
|
These entries have the general format <code class="language-plaintext highlighter-rouge">$X</code> or <code class="language-plaintext highlighter-rouge">$X:data</code>. Optionally, they can
|
|||
|
be negated with a tilde (<code class="language-plaintext highlighter-rouge">~</code>) before the character: for example, <code class="language-plaintext highlighter-rouge">$~a</code> matches
|
|||
|
every user that is <em>not</em> identified to services.</p>
|
|||
|
|
|||
|
<h2 id="available-extban-types">Available extban types<!-- markdownlint-disable MD033 MD041 --></h2>
|
|||
|
<p><div class="table"></p>
|
|||
|
|
|||
|
<table>
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
|
|||
|
<th>Type (name)</th>
|
|||
|
|
|||
|
<th>Description</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>$a</code>
|
|||
|
|
|||
|
<br />
|
|||
|
account name
|
|||
|
</td>
|
|||
|
<td><p>Match users identified to the account specified in the parameter.
|
|||
|
Accepts wildcards; an empty <code class="language-plaintext highlighter-rouge">$a</code> matches any logged-in user.
|
|||
|
For example: <code class="language-plaintext highlighter-rouge">/mode #channel +q $a:example</code> would quiet a user identified
|
|||
|
to services as example.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>$j</code>
|
|||
|
|
|||
|
<br />
|
|||
|
cannot join other channel
|
|||
|
</td>
|
|||
|
<td><p>Takes an exact channel name (no wildcards or globbing) as its parameter
|
|||
|
and matches any user who is banned from that channel. Due to caching by
|
|||
|
the server, a change to the target channel’s ban list may not immediately
|
|||
|
affect a user’s ability to send to the channel using <code class="language-plaintext highlighter-rouge">$j</code>.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>$r</code>
|
|||
|
|
|||
|
<br />
|
|||
|
ircname
|
|||
|
</td>
|
|||
|
<td><p>Matches on a client’s ircname, or gecos. The parameter accepts wildcards.
|
|||
|
For example: <code class="language-plaintext highlighter-rouge">/mode #channel +b $r:Foo*</code> will ban any user whose gecos
|
|||
|
begins with “Foo”.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>$x</code>
|
|||
|
|
|||
|
<br />
|
|||
|
full match
|
|||
|
</td>
|
|||
|
<td><p>Takes a parameter that is matched against a client’s full
|
|||
|
<code class="language-plaintext highlighter-rouge">nick!username@host#gecos</code>. The parameter accepts wildcards.
|
|||
|
For example, <code class="language-plaintext highlighter-rouge">/mode #channel +b $x:*#Foo*</code> will ban any user whose gecos
|
|||
|
begins with Foo, or whose gecos contains “#Foo”.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
|
|||
|
<code>$z</code>
|
|||
|
|
|||
|
<br />
|
|||
|
connected securely
|
|||
|
</td>
|
|||
|
<td><p>Accepts no parameters. Matches users who are connected via SSL/TLS.</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
|
|||
|
<p></div></p>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<hr>
|
|||
|
<p>Based on content © 2016-2021 <a href="https://github.com/freenode/web-7.0/graphs/contributors">freenode/web7.0’s contributors</a>
|
|||
|
under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons BY-NC-SA</a></p>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</main><footer>
|
|||
|
<div>
|
|||
|
<span class="copyright">© Libera Chat's contributors 2021</span>
|
|||
|
(<a rel="license noopener noreferrer" href="../LICENSE-content.txt">Content CC BY-NC-SA</a>,
|
|||
|
<a rel="license noopener noreferrer" href="../LICENSE-code.txt">Code MIT</a>)
|
|||
|
<span class="mobile-hide">/</span>
|
|||
|
<a href="../atom.xml">Feed (atom)</a>
|
|||
|
<span class="mobile-hide">/</span>
|
|||
|
<a href="../privacy.html">Privacy</a>
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
<a rel="me noopener noreferrer" href="https://fosstodon.org/@liberachat">Mastodon</a>
|
|||
|
<span class="mobile-hide">/</span>
|
|||
|
<a href="https://github.com/Libera-Chat/libera-chat.github.io" rel="noopener noreferrer">GitHub</a>
|
|||
|
<span class="mobile-hide">/</span>
|
|||
|
<a href="https://twitter.com/liberachat" rel="noopener noreferrer">Twitter</a>
|
|||
|
<span class="mobile-hide">/</span>
|
|||
|
<a href="https://facebook.com/liberachat" rel="noopener noreferrer">Facebook</a>
|
|||
|
</div>
|
|||
|
</footer>
|