本文整理匯總了Golang中github.com/nlopes/slack.PostMessageParameters.IconURL方法的典型用法代碼示例。如果您正苦於以下問題:Golang PostMessageParameters.IconURL方法的具體用法?Golang PostMessageParameters.IconURL怎麽用?Golang PostMessageParameters.IconURL使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/nlopes/slack.PostMessageParameters
的用法示例。
在下文中一共展示了PostMessageParameters.IconURL方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: handleChat
func (s *Slack) handleChat(action string, params map[string]string) (interface{}, error) {
var v interface{}
var err error
switch action {
case "delete":
ch, ts, err := s.s.DeleteMessage(params["channel"], params["ts"])
if err != nil {
return nil, err
}
v = map[string]string{
"channel": ch,
"ts": ts,
}
case "postmessage":
postParam := slack.PostMessageParameters{}
postParam.Username = getStringParam(params, "username", slack.DEFAULT_MESSAGE_USERNAME)
postParam.Parse = getStringParam(params, "parse", slack.DEFAULT_MESSAGE_PARSE)
postParam.LinkNames = getIntParam(params, "link_names", slack.DEFAULT_MESSAGE_LINK_NAMES)
postParam.UnfurlLinks = getBoolParam(params, "unfurl_links", slack.DEFAULT_MESSAGE_UNFURL_LINKS)
postParam.UnfurlMedia = getBoolParam(params, "unfurl_media", slack.DEFAULT_MESSAGE_UNFURL_MEDIA)
postParam.IconURL = getStringParam(params, "icon_url", slack.DEFAULT_MESSAGE_ICON_URL)
postParam.IconEmoji = getStringParam(params, "icon_emoji", slack.DEFAULT_MESSAGE_ICON_EMOJI)
if err = json.Unmarshal([]byte(getStringParam(params, "attachments", "[]")), &postParam.Attachments); err != nil {
return nil, err
}
ch, ts, err := s.s.PostMessage(params["channel"], params["text"], postParam)
if err != nil {
return nil, err
}
v = map[string]string{
"channel": ch,
"ts": ts,
}
case "update":
ch, ts, text, err := s.s.UpdateMessage(params["channel"], params["ts"], params["text"])
if err != nil {
return nil, err
}
v = map[string]string{
"channel": ch,
"ts": ts,
"text": text,
}
default:
return nil, fmt.Errorf("invalid chat action %s", action)
}
return v, err
}
示例2: addItem
// Message will be passed to server with '-' prefix via various way
// + Direct message with the bots
// + Use slash command `/working <message>`
// + Use cli `working-on <message>`
// + Might use Chrome plugin
// + ...
// Token is secondary param to indicate the user
func addItem(c *gin.Context) {
// Parse token and message
var item Item
text := c.PostForm("text")
text = strings.TrimSpace(text)
if text == "" {
log.Fatalln("Message is nil")
return
}
userID := c.PostForm("user_id")
userName := c.PostForm("user_name")
item.ID = bson.NewObjectId()
item.CreatedAt = time.Now()
item.Name = userName
item.UserID = userID
item.Text = text
ctx, err := db.NewContext()
if err != nil {
panic(err)
}
defer ctx.Close()
// Add Item to database
err = ctx.C("items").Insert(item)
if err != nil {
log.Fatalln(err)
}
// Repost to the target channel
channel := os.Getenv("WORKING_CHANNEL")
botToken := os.Getenv("BOT_TOKEN")
if botToken == "" {
log.Fatal("No token provided")
os.Exit(1)
}
s := slack.New(botToken)
// <@U024BE7LH|bob>
title := "*" + userName + "* is working on: " + text
params := slack.PostMessageParameters{}
params.IconURL = "http://i.imgur.com/fLcxkel.png"
params.Username = "oshin"
s.PostMessage(channel, title, params)
}
示例3: onMessage
func (s *Slack) onMessage(message *Message) error {
postMessage := slack.PostMessageParameters{
Username: message.Name,
LinkNames: 1,
}
re := regexp.MustCompile("^:.*:$")
if re.MatchString(message.Icon) {
postMessage.IconEmoji = message.Icon
} else {
postMessage.IconURL = message.Icon
}
if message.Attachment != nil {
attachment := slack.Attachment{
Fallback: message.Attachment.Fallback,
Color: message.Attachment.Color,
Pretext: message.Attachment.Pretext,
AuthorName: message.Attachment.AuthorName,
AuthorLink: message.Attachment.AuthorLink,
AuthorIcon: message.Attachment.AuthorIcon,
Title: message.Attachment.Title,
TitleLink: message.Attachment.TitleLink,
Text: message.Attachment.Text,
ImageURL: message.Attachment.ImageURL,
MarkdownIn: []string{"text", "pretext", "fields"},
}
if len(message.Attachment.Fields) > 0 {
fields := make([]slack.AttachmentField, len(message.Attachment.Fields))
for i := range fields {
fields[i].Title = message.Attachment.Fields[i].Title
fields[i].Value = message.Attachment.Fields[i].Value
fields[i].Short = message.Attachment.Fields[i].Short
}
attachment.Fields = fields
}
postMessage.Attachments = []slack.Attachment{attachment}
}
_, _, err := s.Client.PostMessage(message.Channel, message.Message, postMessage)
return err
}
示例4: sendMessage
func sendMessage(issue Issue, channel string) error {
params := slack.PostMessageParameters{}
text := fmt.Sprintf("*%s*\n\n *Assignee* %s *Priority* %s ", issue.Fields.Summary, issue.Fields.Assignee.DisplayName, issue.Fields.Priority.Name)
attachment := slack.Attachment{
Title: issue.Key,
TitleLink: fmt.Sprintf("%s/browse/%s", jiraHostURL, issue.Key),
Text: text,
Color: getColor(issue.Fields.Status.Name),
MarkdownIn: []string{"text", "pretext"},
}
params.Attachments = []slack.Attachment{attachment}
params.IconURL = jiraIcon
params.Username = "Jira"
_, _, err := Slack.PostMessage(channel, "", params)
if err != nil {
fmt.Printf("%s\n", err)
return err
}
return nil
}
示例5: createMessage
// createMessage generates the message to post to Slack.
func createMessage(p Plugin, user *slack.User) slack.PostMessageParameters {
var messageOptions MessageOptions
var color string
var messageTitle string
// Determine if the build was a success
if p.Build.Status == "success" {
messageOptions = p.Config.Success
color = "good"
messageTitle = "Build succeeded"
} else {
messageOptions = p.Config.Failure
color = "danger"
messageTitle = "Build failed"
}
// setup the message
messageParams := slack.PostMessageParameters{
Username: messageOptions.Username,
}
if strings.HasPrefix(messageOptions.Icon, "http") {
log.Info("Icon is a URL")
messageParams.IconURL = messageOptions.Icon
} else {
log.Info("Icon is an emoji")
messageParams.IconEmoji = messageOptions.Icon
}
// setup the payload
payload := templatePayload{
Build: p.Build,
Repo: p.Repo,
BuildLast: p.BuildLast,
User: user,
}
messageText, err := template.Render(messageOptions.Template, &payload)
if err != nil {
log.Error("Could not parse template")
}
// create the attachment
attachment := slack.Attachment{
Color: color,
Text: messageText,
Title: messageTitle,
TitleLink: p.Build.Link,
}
// Add image if any are provided
imageCount := len(messageOptions.ImageAttachments)
if imageCount > 0 {
log.WithFields(log.Fields{
"count": imageCount,
}).Info("Choosing from images")
rand.Seed(time.Now().UTC().UnixNano())
attachment.ImageURL = messageOptions.ImageAttachments[rand.Intn(imageCount)]
}
messageParams.Attachments = []slack.Attachment{attachment}
return messageParams
}
示例6: main
func main() {
amqpConn, err := amqp.Dial(config.AmqpURI)
fatalError(err, "couldn't connect to mq server")
defer amqpConn.Close()
amqpChan, err := amqpConn.Channel()
fatalError(err, "couldn't create mq channel")
defer amqpChan.Close()
amqpQueue, err := amqpChan.QueueDeclare("", false, true, true, false, nil)
fatalError(err, "couldn't create mq queue")
err = amqpChan.QueueBind(amqpQueue.Name, "*.message", config.AmqpExchange, false, nil)
fatalError(err, "couldn't bind mq queue")
amqpMessages, err := amqpChan.Consume(amqpQueue.Name, "", true, true, false, false, nil)
fatalError(err, "couldn't consume mq messages")
api := slack.New(config.SlackToken)
rtm := api.NewRTM()
go rtm.ManageConnection()
for {
select {
case ev := <-rtm.IncomingEvents:
if msg, ok := ev.Data.(*slack.MessageEvent); ok {
if msg.SubType == "bot_message" || msg.Channel != config.SlackChannelID {
break
}
user, err := rtm.GetUserInfo(msg.User)
if err != nil {
break
}
bridgeMsg := BridgeMessage{
Sender: user.Name,
Content: flattenSlackMessage(rtm, msg.Text),
}
jsonData, err := json.Marshal(bridgeMsg)
fatalError(err, "couldn't serialize bridge message")
amqpMsg := amqp.Publishing{
Body: jsonData,
DeliveryMode: amqp.Persistent,
}
fmt.Printf("[<] %s: %s\n", bridgeMsg.Sender, bridgeMsg.Content)
err = amqpChan.Publish(config.AmqpExchange, "slack.message", false, false, amqpMsg)
fatalError(err, "couldn't publish mq message")
}
case ev := <-amqpMessages:
if ev.RoutingKey == "slack.message" {
break
}
bridgeMsg := map[string]interface{}{}
err = json.Unmarshal(ev.Body, &bridgeMsg)
fatalError(err, "couldn't deserialize bridge message")
slackMsg := slack.PostMessageParameters{
Username: bridgeMsg["Sender"].(string),
Text: bridgeMsg["Content"].(string),
}
if senderAvatar, ok := bridgeMsg["SenderAvatar"]; ok {
slackMsg.IconURL = senderAvatar.(string)
}
for _, interop := range config.BridgeInterop {
isInteropMessage := true
for key, value := range interop.MessageMatch {
if !reflect.DeepEqual(bridgeMsg[key], value) {
isInteropMessage = false
break
}
}
if isInteropMessage {
regex := regexp.MustCompile(interop.MessageRegex)
match := regex.FindAllStringSubmatch(slackMsg.Text, -1)
if len(match) == 1 && len(match[0]) == 3 {
slackMsg.Username = match[0][1]
slackMsg.Text = match[0][2]
slackMsg.IconURL = interop.AvatarURLs[slackMsg.Username]
}
}
}
fmt.Printf("[>] %s: %s\n", slackMsg.Username, slackMsg.Text)
_, _, err = rtm.PostMessage(config.SlackChannelID, slackMsg.Text, slackMsg)
fatalError(err, "couldn't post slack message")
}
}
}
示例7: postDigest
// Post summary to Slack channel
func postDigest() {
channel := os.Getenv("DIGEST_CHANNEL")
botToken := os.Getenv("BOT_TOKEN")
if botToken == "" {
log.Fatal("No token provided")
os.Exit(1)
}
s := slack.New(botToken)
users, err := s.GetUsers()
if err != nil {
log.Fatal("Cannot get users")
os.Exit(1)
}
ctx, err := db.NewContext()
if err != nil {
panic(err)
}
defer ctx.Close()
log.Info("Preparing data")
// If count > 0, it means there is data to show
count := 0
title := " >> Yesterday I did: "
params := slack.PostMessageParameters{}
fields := []slack.AttachmentField{}
yesterday := arrow.Yesterday().UTC()
toDate := time.Date(yesterday.Year(), yesterday.Month(), yesterday.Day(), 0, 0, 0, 0, time.UTC)
// Prepare attachment of done items
for _, user := range users {
if user.IsBot || user.Deleted {
continue
}
// log.Info("Process user: " + user.Name + " - " + user.Id)
// Query done items from Database
var values string
var items []Item
err = ctx.C("items").Find(bson.M{"$and": []bson.M{
bson.M{"user_id": user.Id},
bson.M{"created_at": bson.M{"$gt": toDate}},
},
}).All(&items)
if err != nil {
log.Fatal("Cannot query done items.")
os.Exit(1)
}
for _, item := range items {
values = values + " + " + item.Text + "\n\t"
}
// <@U024BE7LH|bob>
if len(items) > 0 {
count = count + 1
field := slack.AttachmentField{
Title: "@" + user.Name,
Value: values,
}
fields = append(fields, field)
}
}
params.Attachments = []slack.Attachment{
slack.Attachment{
Color: "#7CD197",
Fields: fields,
},
}
params.IconURL = "http://i.imgur.com/fLcxkel.png"
params.Username = "oshin"
if count > 0 {
s.PostMessage(channel, title, params)
}
}
示例8: sendMessage
func (s *Client) sendMessage(issue *redmine.Issue, channel string) (err error) {
params := slackapi.PostMessageParameters{}
params.IconURL = botLogo
params.Username = "Redmine Bot"
fields := make([]slackapi.AttachmentField, 6)
var idx int = 3
fields[0] = slackapi.AttachmentField{
Title: "Project",
Value: issue.Project.Name,
Short: true,
}
fields[1] = slackapi.AttachmentField{
Title: "Status",
Value: issue.Status.Name,
Short: true,
}
fields[2] = slackapi.AttachmentField{
Title: "Author",
Value: issue.Author.Name,
Short: true,
}
if issue.AssignedTo != nil {
fields[idx] = slackapi.AttachmentField{
Title: "Assigned To",
Value: issue.AssignedTo.Name,
Short: true,
}
idx += 1
}
if issue.Category != nil {
fields[idx] = slackapi.AttachmentField{
Title: "Category",
Value: issue.Category.Name,
Short: true,
}
idx += 1
}
if issue.Version != nil {
fields[idx] = slackapi.AttachmentField{
Title: "Version",
Value: issue.Version.Name,
Short: true,
}
}
var title string
if issue.Tracker != nil {
title = fmt.Sprintf("%s #%d: %s", issue.Tracker.Name, issue.Id, issue.Subject)
} else {
title = fmt.Sprintf("#%d: %s", issue.Id, issue.Subject)
}
attachment := slackapi.Attachment{
Title: title,
TitleLink: s.redmine.GetIssueUrl(issue),
Fields: fields,
}
if s.redmine.IssueIsClosed(issue) {
attachment.Color = "good"
} else if s.redmine.IssueInHighPriority(issue) {
attachment.Color = "danger"
}
params.Attachments = []slackapi.Attachment{attachment}
_, _, err = s.slack.PostMessage(channel, "", params)
return err
}