# 고정 메시지

## 고정 메시지 <a href="#undefined" id="undefined"></a>

채팅에서 고정메시지(Pinned Message)는 채팅방이나 그룹 대화에서 중요한 메시지를 채널이나 대화창의 상단에 고정하는 기능을 말합니다. 이 기능은 참가자들이 해당 채팅을 열 때마다 쉽게 볼 수 있도록 하여 중요한 정보나 알림을 놓치지 않도록 도와줍니다. 다음은 고정메시지의 주요 특징과 활용 방법에 대한 설명입니다.

### 고정 메시지의 활용 방법 <a href="#undefined" id="undefined"></a>

* **회의 일정 공지**: 정기 회의나 중요 이벤트의 일정을 고정메시지로 설정하여 참여자들이 일정을 잊지 않도록 합니다.
* **중요 문서 링크**: 중요한 문서나 자료의 링크를 고정하여 모든 참가자가 쉽게 접근할 수 있도록 합니다.
* **규칙 및 지침 공유**: 채팅방의 규칙이나 프로젝트 지침을 고정메시지로 설정하여 새로운 참가자도 쉽게 지침을 확인할 수 있게 합니다.
* **긴급 공지**: 긴급하게 전달해야 할 내용이나 변경 사항을 고정메시지로 빠르게 공유할 수 있습니다.

고정메시지 기능은 다양한 커뮤니케이션 플랫폼에서 제공되며, 이를 효과적으로 활용하면 팀 커뮤니케이션의 효율성을 크게 높일 수 있습니다.

### 고정 메시지 생성 <a href="#undefined" id="undefined"></a>

채팅 애플리케이션에서 중요한 메시지를 사용자들이 쉽게 볼 수 있도록 상단에 고정하는 기능입니다. 아래의 C# 코드는 채팅 채널에서 메시지를 고정하는 방법을 보여줍니다.

```csharp
var newPin = await nc.createPin(channelId, messageId, pinned, pinnedAt, expiredAt);
```

* `channelId`: 메시지가 고정될 채팅 채널의 고유 식별자입니다.
* `pinned`: 고정할 메시지의 내용입니다.
* `pinnedAt`: 메시지가 고정된 시각을 나타냅니다.
* `expiredAt`: 메시지 고정이 해제될 시각입니다.

이 함수를 사용하면 특정 채팅 채널 내에서 중요한 메시지를 쉽게 강조하여 표시할 수 있습니다.

### 고정 메시지 수정 <a href="#undefined" id="undefined"></a>

기존에 고정된 메시지의 정보를 업데이트하기 위한 기능입니다. 메시지의 내용, 고정 시각 또는 만료 시각을 변경할 수 있습니다.

```csharp
var updatedPin = await nc.updatePin(id, channelId, pinned, pinnedAt, expiredAt);
```

* `channelId`: 수정할 메시지가 있는 채널의 ID입니다.
* `pinned`: 수정된 메시지 내용입니다.
* `pinnedAt`: 메시지가 새롭게 고정된 시각입니다.
* `expiredAt`: 메시지 고정의 새로운 만료 시각입니다.

이 코드는 이미 고정된 메시지의 세부사항을 변경할 때 사용되며, 메시지의 중요성이 변경되었거나 고정 시간을 조정해야 할 때 유용합니다.

### 고정 메시지 정보 <a href="#undefined" id="undefined"></a>

특정 메시지의 고정 관련 정보를 조회하는 기능입니다. 이는 메시지의 고정 상태, 고정 시각, 만료 시각 등을 확인할 수 있습니다.

```csharp
var pin = await nc.getPin(channelId, messageId);
```

* `channelId`: 정보를 조회할 채널의 ID입니다.
* `messageId`: 고정된 메시지의 고유 식별자입니다.

이 함수를 통해 특정 메시지가 현재 어떤 상태인지 확인할 수 있으며, 이는 관리자나 사용자가 채널 내 메시지 관리를 보다 효과적으로 할 수 있게 도와줍니다.

### 고정 메시지 목록 <a href="#undefined" id="undefined"></a>

채팅 채널에서 현재 고정된 모든 메시지의 목록을 조회하는 기능입니다. 이 함수는 페이징을 지원하여 대규모 채널에서도 효율적으로 데이터를 처리할 수 있습니다. 사용자는 `offset`과 `per_page`을 설정하여 원하는 범위의 데이터를 가져올 수 있습니다.

```csharp
Hashtable filter = new Hashtable
{
    { "channel_id", channelId },
};
Hashtable sort = new Hashtable
{
    { "created_at", -1 },
};
Hashtable option = new Hashtable
{
    { "offset", 0 },
    { "per_page", 10 },
};
var pins = await nc.getPins(channelId, filter, sort, option);
```

**파라미터 설명**

* **filter**: 조회할 데이터를 필터링하기 위한 조건들을 정의합니다. 예를 들어, 특정 채널에서 고정 메시지를 조회할 수 있습니다.
* **sort**: 결과 목록의 정렬 방식을 정의합니다. 여기서는 생성 시간(`created_at`)을 기준으로 내림차순(-1) 정렬을 사용합니다.
* **option**: 조회 시 사용할 옵션을 정의합니다. `offset`은 조회 시작 위치, `per_page`는 페이지 당 보여질 메시지 수를 지정합니다.

**옵션 세부 사항**

<table><thead><tr><th width="149">ID</th><th width="140">Type</th><th>Description</th></tr></thead><tbody><tr><td>offset</td><td>number</td><td>데이터를 가져올 시작 위치입니다.</td></tr><tr><td>per_page</td><td>number</td><td>한 페이지당 반환할 메시지의 수, 최대 100개까지 설정 가능합니다.</td></tr></tbody></table>

이 기능을 사용하면 채널 관리자는 채널 내에서 중요한 메시지를 쉽게 모니터링하고 관리할 수 있습니다. 또한, 특정 사용자 또는 시간 기준으로 고정 메시지를 빠르게 검색하고 정렬할 수 있어, 채널의 효율적인 운영을 돕습니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gamechat.me/basics/game-chat-v3/game-chat/v3/undefined-7.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
