1072 lines
34 KiB
HTML
1072 lines
34 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>Creating Channels | Libera Chat</title>
|
|||
|
<meta name="generator" content="Jekyll v3.9.2" />
|
|||
|
<meta property="og:title" content="Creating Channels" />
|
|||
|
<meta property="og:locale" content="en_GB" />
|
|||
|
<meta name="description" content="A person who joins an empty and unregistered channel is granted temporary Operator status. This does not guarantee their ownership of the channel. They need to REGISTER the channel with ChanServ to gain ownership of it." />
|
|||
|
<meta property="og:description" content="A person who joins an empty and unregistered channel is granted temporary Operator status. This does not guarantee their ownership of the channel. They need to REGISTER the channel with ChanServ to gain ownership of it." />
|
|||
|
<link rel="canonical" href="creatingchannels.html" />
|
|||
|
<meta property="og:url" content="https://libera.chat/guides/creatingchannels" />
|
|||
|
<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="Creating Channels" />
|
|||
|
<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":"A person who joins an empty and unregistered channel is granted temporary Operator status. This does not guarantee their ownership of the channel. They need to REGISTER the channel with ChanServ to gain ownership of it.","headline":"Creating Channels","url":"https://libera.chat/guides/creatingchannels"}</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="creatingchannels.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"
|
|||
|
class="active"
|
|||
|
href="creatingchannels.html"
|
|||
|
><span>Creating Channels</span></a>
|
|||
|
|
|||
|
<a
|
|||
|
role="menuitem"
|
|||
|
|
|||
|
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>Creating Channels</h1>
|
|||
|
|
|||
|
<p>A person who joins an <em>empty</em> and unregistered channel is granted
|
|||
|
<strong>temporary</strong> Operator status. This does not guarantee their ownership of the
|
|||
|
channel. They need to <code class="language-plaintext highlighter-rouge">REGISTER</code> the channel with <code class="language-plaintext highlighter-rouge">ChanServ</code> to gain ownership
|
|||
|
of it.</p>
|
|||
|
|
|||
|
<p>This guide will help you prepare for and go through that process.</p>
|
|||
|
|
|||
|
<h2 id="choosing-the-correct-namespace">Choosing the correct namespace</h2>
|
|||
|
|
|||
|
<p>Before creating a new channel on Libera.Chat, please take a moment to read up
|
|||
|
on <a href="../chanreg.html">our namespaces policy</a> and ensure that your channel is named
|
|||
|
appropriately from the beginning. This will avoid disruptions in the future.</p>
|
|||
|
|
|||
|
<h2 id="be-identified">Be identified</h2>
|
|||
|
|
|||
|
<p>To register and manage channels, you will need to be <a href="registration.html#logging-in">identified to</a>
|
|||
|
<code class="language-plaintext highlighter-rouge">NickServ</code>.</p>
|
|||
|
|
|||
|
<h2 id="pick-a-name">Pick a name</h2>
|
|||
|
|
|||
|
<p>Before you can register it, you’ll obviously need to pick a channel name!
|
|||
|
Think of one that is descriptive of the channel’s purpose, and has no spaces
|
|||
|
or commas. The name you choose will become what’s called your namespace. You
|
|||
|
can use some punctuation such as “.”, “_” or “+” instead of spaces, but it is
|
|||
|
better to just drop the space.</p>
|
|||
|
|
|||
|
<p>It is typical to reserve <code class="language-plaintext highlighter-rouge">-</code> as a delimiter for additional channels within the
|
|||
|
namespace, such as <code class="language-plaintext highlighter-rouge">-dev</code> or <code class="language-plaintext highlighter-rouge">-ops</code>. Using a <code class="language-plaintext highlighter-rouge">-</code> in the root name might result
|
|||
|
in conflicting namespaces, and cause complications for you and others when
|
|||
|
registering groups with Libera.Chat.</p>
|
|||
|
|
|||
|
<p>Once you’ve settled on the name, add the appropriate number of <code class="language-plaintext highlighter-rouge">#</code>’s to the
|
|||
|
beginning, according to the rules in <a href="../chanreg.html">our namespaces policy</a>.</p>
|
|||
|
|
|||
|
<p>For example, if it is an official representation of your project and the
|
|||
|
project is named “Awesome App”, you can use one <code class="language-plaintext highlighter-rouge">#</code>. You’ll probably go with
|
|||
|
something like: <code class="language-plaintext highlighter-rouge">#AwesomeApp</code></p>
|
|||
|
|
|||
|
<p>If it’s not a “Project” or “Community” channel based on the definitions
|
|||
|
described in <a href="../chanreg.html">our namespaces policy</a> you’d go with two <code class="language-plaintext highlighter-rouge">#</code>. As an
|
|||
|
example, it might be a channel for your friends to talk to you in, so you’d
|
|||
|
probably pick something like <code class="language-plaintext highlighter-rouge">##YourNickname</code></p>
|
|||
|
|
|||
|
<h2 id="check-that-it-is-available">Check that it is available</h2>
|
|||
|
|
|||
|
<p>You can check that a channel is registered or not with <code class="language-plaintext highlighter-rouge">ChanServ</code>. To see if
|
|||
|
for example <code class="language-plaintext highlighter-rouge">#libera</code> is registered, you would do:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/msg ChanServ INFO #libera
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>Since it is registered, ChanServ will tell you the registration details you’re
|
|||
|
allowed to see. Otherwise it would say:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">ChanServ: #libera is not registered.
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<h2 id="joining-the-channel">Joining the channel</h2>
|
|||
|
|
|||
|
<p>The next step of creating a channel is to <code class="language-plaintext highlighter-rouge">/join</code> it.</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/join <#channelname>
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>If the channel you joined was empty and is unregistered, you will have the
|
|||
|
temporary Operator status now. Depending on your client, you should appear in
|
|||
|
the user list with an <code class="language-plaintext highlighter-rouge">@</code> or another symbol before your nick.</p>
|
|||
|
|
|||
|
<h2 id="registering-with-chanserv">Registering with <code class="language-plaintext highlighter-rouge">ChanServ</code></h2>
|
|||
|
|
|||
|
<p>Once you’re sure you can register the channel, you can do so with:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/msg ChanServ REGISTER <#channelname>
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>Note: The registration will be case-sensitive, so take care if there are
|
|||
|
branding rules you need to comply with.</p>
|
|||
|
|
|||
|
<p>Congratulations on your new Libera.Chat channel!</p>
|
|||
|
|
|||
|
<h3 id="troubleshooting">Troubleshooting</h3>
|
|||
|
|
|||
|
<p>If you do not get the Operator status, but believe you already registered
|
|||
|
this channel during a previous session, try using <code class="language-plaintext highlighter-rouge">ChanServ OP</code>:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/msg ChanServ OP <#channel>
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>If you did not previously attempt to register, and you do not get the
|
|||
|
Operator status on join, it could be because there are people already in the
|
|||
|
channel. You will need to ask them to leave while you set it up. If they do
|
|||
|
not cooperate, you will likely need to pick a new name.</p>
|
|||
|
|
|||
|
<p>If the channel is already registered by someone else, but not in use, or there
|
|||
|
are no active Operators, it may be subject to <a href="../policies.html#channels">expiry</a>,
|
|||
|
depending on the type of namespace it belongs to. As part of the expiry
|
|||
|
process, staff will take input from both you and any existing channel members.</p>
|
|||
|
|
|||
|
<p>If you are a representative of a project and you wish to use a channel that is
|
|||
|
already registered, you can ask staff about a <a href="../chanreg.html">group registration</a>.</p>
|
|||
|
|
|||
|
<p>If you are unsure of any of the above, talk with Libera.Chat staff. You can
|
|||
|
find staff either in <code class="language-plaintext highlighter-rouge">#libera</code> or on <code class="language-plaintext highlighter-rouge">/stats p</code>.</p>
|
|||
|
|
|||
|
<p>Once you have resolved the conflict, you can resume
|
|||
|
<a href="creatingchannels.html#registering-with-chanserv">the registration process</a>.</p>
|
|||
|
|
|||
|
<h3 id="special-instructions-for-group-contacts">Special Instructions for Group Contacts</h3>
|
|||
|
|
|||
|
<p>Libera.Chat uses an Atheme feature called <code class="language-plaintext highlighter-rouge">ProjectServ</code> to track group
|
|||
|
registrations. It shows some additional information in <code class="language-plaintext highlighter-rouge">NickServ</code> and allows
|
|||
|
for convenient features such as <code class="language-plaintext highlighter-rouge">CLAIM</code> in <code class="language-plaintext highlighter-rouge">ChanServ</code>.</p>
|
|||
|
|
|||
|
<p>If you already have a group registration set up with us, and you are listed as
|
|||
|
a Group Contact (GC) for the namespace you have chosen, it will be displayed
|
|||
|
to you in your <code class="language-plaintext highlighter-rouge">NickServ</code> info. Look for a line like:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">NickServ: Group contact for projectname (#projectname; projectname/*)
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p><code class="language-plaintext highlighter-rouge">CLAIM</code> will allow you to acquire a channel <em>within your namespace</em> even if
|
|||
|
that channel is already registered to someone else, without the need for staff
|
|||
|
intervention. It can also be used for initial registration even if it is not
|
|||
|
already taken.</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">09:23 -- ChanServ: ***** ChanServ Help *****
|
|||
|
09:23 -- ChanServ:
|
|||
|
09:23 -- ChanServ: Help for CLAIM:
|
|||
|
09:23 -- ChanServ:
|
|||
|
09:23 -- ChanServ: The CLAIM command allows you to take control of a channel
|
|||
|
09:23 -- ChanServ: belonging to a project you are authorized to represent.
|
|||
|
09:23 -- ChanServ:
|
|||
|
09:23 -- ChanServ: Syntax: CLAIM <#channel>
|
|||
|
09:23 -- ChanServ:
|
|||
|
09:23 -- ChanServ: Examples:
|
|||
|
09:23 -- ChanServ: /msg ChanServ CLAIM #coolproject-dev
|
|||
|
09:23 -- ChanServ:
|
|||
|
09:23 -- ChanServ: ***** End of Help *****
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>Using <code class="language-plaintext highlighter-rouge">CLAIM</code> to grab a channel from someone else might be seen as hostile, or
|
|||
|
it could confuse people, so it is a good idea to at least give some warning.
|
|||
|
Try to ask for the cooperation of people who have already occupied or
|
|||
|
registered a channel before taking it from them.</p>
|
|||
|
|
|||
|
<h2 id="setting-channel-modes">Setting channel modes</h2>
|
|||
|
|
|||
|
<p>Channels differ in what <code class="language-plaintext highlighter-rouge">cmodes</code> they need. Refer to
|
|||
|
<a href="channelmodes.html">the channel modes guide</a> for detailed information about
|
|||
|
them.</p>
|
|||
|
|
|||
|
<p>The default modes set on a new channel are <code class="language-plaintext highlighter-rouge">+Cnst</code>.</p>
|
|||
|
|
|||
|
<p>To set channel modes, you use <code class="language-plaintext highlighter-rouge">/mode <#channelname> [+|-]<mode></code>.</p>
|
|||
|
|
|||
|
<p>For example, during a spambot attack you might choose to only allow users who
|
|||
|
are <a href="registration.html#logging-in">logged in</a> to join your channel. This is
|
|||
|
effective as most bots do not log in to accounts. To set the requirement, you
|
|||
|
would use the <code class="language-plaintext highlighter-rouge">r</code> mode.</p>
|
|||
|
|
|||
|
<p>To toggle <code class="language-plaintext highlighter-rouge">r</code> on, so only identified users can join:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/mode <#channelname> +r
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>To toggle <code class="language-plaintext highlighter-rouge">r</code> off, so everyone else can join again:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/mode <#channelname> -r
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<h2 id="setting-up-permissions">Setting up permissions</h2>
|
|||
|
|
|||
|
<p>Once you have your channel registered, and your users start dropping in, you
|
|||
|
might also need to do some <a href="catalyst.html">channel management</a> if some of
|
|||
|
them outstay their welcome. If you enlist help for this, you will need to give
|
|||
|
your new Operators permissions.</p>
|
|||
|
|
|||
|
<p>The permissions you can give are outlined in the output of
|
|||
|
<code class="language-plaintext highlighter-rouge">/msg ChanServ HELP FLAGS</code>, along with instructions about the use of
|
|||
|
<code class="language-plaintext highlighter-rouge">TEMPLATE</code> functionality.</p>
|
|||
|
|
|||
|
<p>If your channel is <strong>not</strong> set <code class="language-plaintext highlighter-rouge">SECURE</code>, then you can trial new Operators by
|
|||
|
<em>temporarily</em> giving them the Operator status.</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/msg ChanServ OP <#channel> [nickname]
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>Substitute <code class="language-plaintext highlighter-rouge">DEOP</code> in place of <code class="language-plaintext highlighter-rouge">OP</code> to remove their status if you don’t like
|
|||
|
their performance. <code class="language-plaintext highlighter-rouge">VOICE</code> and <code class="language-plaintext highlighter-rouge">DEVOICE</code> are the equivalents for giving and
|
|||
|
taking Voiced status.</p>
|
|||
|
|
|||
|
<p>The <code class="language-plaintext highlighter-rouge">SECURE</code> channel flag limits <code class="language-plaintext highlighter-rouge">OP|DEOP|VOICE|DEVOICE</code> functionality to
|
|||
|
only those who possess the corresponding <code class="language-plaintext highlighter-rouge">ChanServ</code> flags, which will prevent
|
|||
|
people from receiving these statuses on a temporary basis.</p>
|
|||
|
|
|||
|
<p><strong>Be very careful who you grant the <code class="language-plaintext highlighter-rouge">F</code> flag to. They will have full
|
|||
|
permissions on the channel and will be able to remove your own <code class="language-plaintext highlighter-rouge">F</code>.</strong> The <code class="language-plaintext highlighter-rouge">f</code>
|
|||
|
flag will allow them to assign or unassign permissions they already have and
|
|||
|
is thus a safer option.</p>
|
|||
|
|
|||
|
<p>Unless the channel is assigned to a registered group you are listed as a Group
|
|||
|
Contact (GC) of, you will not have
|
|||
|
<a href="creatingchannels.html#special-instructions-for-group-contacts">GC permissions</a> and
|
|||
|
will not be able to get the channel back without their cooperation or by
|
|||
|
<a href="../chanreg.html">registering as a group</a>.</p>
|
|||
|
|
|||
|
<p>We also recommend against using <code class="language-plaintext highlighter-rouge">+O</code> or <code class="language-plaintext highlighter-rouge">+V</code> as these flags mean people will
|
|||
|
be given Operator or Voiced status on joining a channel. See
|
|||
|
<a href="catalyst.html#only-be-opped-up-when-necessary">the catalyst guide</a>
|
|||
|
for the philosophy behind this.</p>
|
|||
|
|
|||
|
<h2 id="other-channel-settings">Other channel settings</h2>
|
|||
|
|
|||
|
<p>There are various settings for <code class="language-plaintext highlighter-rouge">ChanServ</code> under <code class="language-plaintext highlighter-rouge">SET</code>. To see what’s currently
|
|||
|
available to you:</p>
|
|||
|
|
|||
|
<pre><code class="language-irc">/msg ChanServ HELP SET
|
|||
|
</code></pre>
|
|||
|
|
|||
|
<p>For example, if your channel is small and risks becoming empty due to daily
|
|||
|
user fluctuations, or things like netsplits, you can enlist <code class="language-plaintext highlighter-rouge">ChanServ</code> to
|
|||
|
<code class="language-plaintext highlighter-rouge">GUARD</code> it.</p>
|
|||
|
|
|||
|
<p>It is also a good idea to <code class="language-plaintext highlighter-rouge">MLOCK</code> channel modes to avoid losing them.</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>
|